2015-08-24 73 views
1

工作不相邻的兄弟选择我有这样的代码: HTML:在Mozilla Firefox 39.0.3

<label> 
    <input class="checkable" type="checkbox" value="6" name="Peak"> 
    <button class="button">1</button> 
</label> 
<label> 
    <input class="checkable" type="checkbox" value="12" name="Peak"> 
    <button class="button">2</button> 
</label> 

CSS:

label > .checkable{ 
    display:none; 
} 
label > .checkable + button{ 
    cursor:pointer; 
    margin:1px; 
    border-radius: 16px; 
    border:transparent; 
    width:32px; 
    height:32px;background: rgba(0,0,0,0); 

} 
label > .checkable:checked + button{ 
    background-color:#690b0c; 
    color:white; 
    border-radius: 16px; 
} 

我结合复选框与元素。当你点击其中一个按钮时,他们应该会看到一个红色的圆形背景。这在IE 11中按预期工作,但在Firefox的最新版本中似乎存在一些问题。 任何人都有解决这个问题吗?

小提琴:https://jsfiddle.net/jjqg5apa/

+0

似乎并没有在Chrome浏览器工作,要么。 –

+0

在Firefox 37 –

+0

没有工作嗯...这不是选择......它的工作原理,如果'显示:none'被删除。 –

回答

0

这里是藤泽亨的答复:


这会不会是一个规范的问题,也不是一个Firefox的错误。

我认为Firefox的38 +的行为符合该规范的话。

https://html.spec.whatwg.org/multipage/forms.html#the-label-element:the-label-element-10

为对象的标签元素的 交互式内容后裔事件标签元素,以及 的交互式内容后裔任何后代的激活行为,必须做什么。

https://html.spec.whatwg.org/multipage/dom.html#interactive-content-2

交互式内容是专门用于用户交互的内容。 一个,音频(如果控件属性存在),按钮...

当你点击一个标签内的按钮,标签的激活行为必须是“什么也不做”,因为该按钮是一个互动内容,这意味着我们应该思考的是用户要激活的按钮,而不是封闭的标签,这样就不会通过单击按钮更改复选框的状态。

我想你可以使用非交互式的内容,而不是按钮(不知道这是很好的A11Y寿),或者只是取消隐藏复选框,并用它代替按钮。


看到完整的错误报告:bugzilla.mozilla.org/show_bug.cgi?id=1197770