在一些测试准备过程中,有人问我这是否会正确地设置第一个字母的颜色:
td.one::first-letter {
color:blue;
}现在,我知道我见过冒号是双倍的地方,但是测试jsFiddle没有显示出两者之间的任何行为差异
td.two:first-letter {
color:green;
}所以,我很好奇有什么不同,为什么你会在伪类前面使用::而不是:?
http://jsfiddle.net/mori57/bqE7Q/
发布于 2013-04-30 01:04:39
它们在本例中是等价的,但只是因为它是一个伪元素,而不是一个伪类。创建双冒号语法是为了防止由于将单冒号伪元素称为“伪类”而引起的混淆(奇怪的是,您的问题说明了这一点)。从spec
此
::表示法是由当前文档引入的,目的是区分伪类和伪元素。为了与现有的样式表兼容,用户代理还必须接受以前在CSS1和2级引入的伪元素(即:first-line、:first-letter、:before和:after)的一个冒号表示法。对于本规范中引入的新伪元素,不允许这种兼容性。
如果你不打算支持IE < 9,最好用双冒号来表示你所有的伪元素。如果您需要支持较旧版本的IE,您可以继续使用单冒号,但仅适用于上述选择器。
发布于 2013-04-30 01:04:57
查过规格了吗?
This ::notation是由当前文档引入的,目的是区分伪类和伪元素。为了与现有的样式表兼容,用户代理还必须接受以前在CSS级别1和2中引入的伪元素的一个冒号表示法(即:first-line、:first-letter、:after和:after)。对于本规范中引入的新伪元素,不允许这种兼容性。
http://www.w3.org/TR/selectors/#pseudo-elements
https://stackoverflow.com/questions/16284272
复制相似问题