是:允许对输入[类型=复选框]伪元素前?是:允许对输入[类型=复选框]伪元素前?(Is the :b

2019-05-12 06:10发布

这StackOverflow的答案介绍如何使用样式CSS3复选框无需<label>

input[type=checkbox]:before {
    content:""; display:inline-block; width:12px; height:12px; background:red;
} 

小提琴

这个工程在Chrome 22,但不能在Firefox 15或IE 9。

鉴于后者的两个浏览器的支持不足, 是Chrome的行为,有效根据CSS3规范?

Answer 1:

这是未知的土地; 规格不明确的东西。 在CSS 2.1规范说 :“注意。 本规范不完全定义的相互作用:前和:与替换元素(如IMG在HTML)之后。 这将在更详细的在未来的规范来定义。”而且,debatably,输入可以被看作是一个在CSS 2.1感替换元素 。

有人可能会认为这些伪元素不能被用于那些不能有任何内容元素(即与EMPTY申报内容),如IMG或输入。 然而,措辞提到了IMG,和附录d有选择的规则br:before

和CSS3选择,已达到推荐状态CSS3的少数地区之一, 明确的东西。 它说 :“在之前::和:: after伪元素可用于前或元素的含量后描述生成的内容。 他们是在CSS 2.1 [CSS21]解释“。



Answer 2:

我认为,Chrome的行为是无效的。 如果你看一看这里 ,它说::before::after伪元素添加新的content之前或目标元素之后content 。 输入元素没有content ; 他们只是有一个value 。 你不能,例如,做<input>Pasta</input>

如果这一切是真的,那么它似乎是Chrome的行为是无效的,而IE和Firefox是正确的。



文章来源: Is the :before pseudo-element allowed on an input[type=checkbox]?