这个答案描述了如何使用CSS3设置复选框样式,而无需使用<label>:
<label>
input[type=checkbox]:before { content:""; display:inline-block; width:12px; height:12px; background:red; }
这在Chrome 22中有效,但在Firefox 15或IE 9中无效。
鉴于后两种浏览器均缺乏支持, 根据CSS3规范 , Chrome的行为是否有效?
这是未知的土地;规格并不能解决问题。在CSS 2.1规范说:
“注意。该规范并未完全定义:before和:after与替换元素(例如HTML中的IMG)的交互。这将在以后的规范中更详细地定义。” 而且,值得一提的是,INPUT可以看作是CSS 2.1意义上的替换元素。
可能会认为这些伪元素不能用于不能包含任何内容(即具有EMPTY声明的内容)的元素,例如IMG或INPUT。但是,该措辞提到了IMG,附录D的选择器有一条规则br:before。
br:before
和CSS3选择,已达到推荐状态CSS3的少数地区之一,确实 没有 明确的事情了。它说:
“ ::before和::after伪元素可用于描述元素内容之前或之后生成的内容。它们在CSS 2.1 [CSS21]中进行了解释。”
::before
::after