通过一些测试准备,有人问我是否会正确设置第一个字母颜色:
td.one::first-letter {
color:blue;
}
现在,我知道我已经看到了冒号加倍的地方,但测试jsFiddle并没有显示出它与
之间的行为有任何差异。td.two:first-letter {
color:green;
}
所以,我只是好奇有什么区别,为什么你会在伪类前使用::而不是:?
答案 0 :(得分:4)
检查规格?
这个::符号是由当前文档引入的 建立伪类和伪元素之间的区别。 为了与现有样式表兼容,用户代理也必须 为引入的伪元素接受前一个单冒号表示法 在CSS级别1和2中(即:第一行,:第一个字母,:之前和 :后)。新伪元素不允许这种兼容性 在本说明书中介绍。
答案 1 :(得分:3)
它们在这种情况下是等价的,但仅仅因为它是伪元素,而不是伪类。创建双冒号语法是为了防止因调用单冒号伪元素“伪类”而引起的混淆(你的问题证明了这一点,奇怪的是)。来自spec:
当前文档引入了此
::
符号,以便在伪类和伪元素之间建立区别。为了与现有样式表兼容,用户代理还必须接受CSS级别1和2中引入的伪元素的先前单冒号表示法(即:first-line
,:first-letter
,:before
和:after
)。本规范中引入的新伪元素不允许这种兼容性。
如果您不打算支持IE< 9,最好用双冒号表示你所有的伪元素。如果您需要支持旧版本的IE,您可以继续使用单冒号,但仅适用于上述选择器。