在CSS中,:: first-letter和:first-letter之间有什么区别?

时间:2013-04-29 17:03:20

标签: css css-selectors pseudo-class

通过一些测试准备,有人问我是否会正确设置第一个字母颜色:

td.one::first-letter {
    color:blue;
}

现在,我知道我已经看到了冒号加倍的地方,但测试jsFiddle并没有显示出它与

之间的行为有任何差异。
td.two:first-letter {
    color:green;
}

所以,我只是好奇有什么区别,为什么你会在伪类前使用::而不是:?

http://jsfiddle.net/mori57/bqE7Q/

2 个答案:

答案 0 :(得分:4)

检查规格?

  

这个::符号是由当前文档引入的   建立伪类和伪元素之间的区别。   为了与现有样式表兼容,用户代理也必须   为引入的伪元素接受前一个单冒号表示法   在CSS级别1和2中(即:第一行,:第一个字母,:之前和   :后)。新伪元素不允许这种兼容性   在本说明书中介绍。

http://www.w3.org/TR/selectors/#pseudo-elements

答案 1 :(得分:3)

它们在这种情况下是等价的,但仅仅因为它是伪元素,而不是伪类。创建双冒号语法是为了防止因调用单冒号伪元素“伪类”而引起的混淆(你的问题证明了这一点,奇怪的是)。来自spec

  

当前文档引入了此::符号,以便在伪类和伪元素之间建立区别。为了与现有样式表兼容,用户代理还必须接受CSS级别1和2中引入的伪元素的先前单冒号表示法(即:first-line:first-letter:before:after)。本规范中引入的新伪元素不允许这种兼容性。

如果您不打算支持IE< 9,最好用双冒号表示你所有的伪元素。如果您需要支持旧版本的IE,您可以继续使用单冒号,但仅适用于上述选择器。