:之后vs .:之后


Answers:


132

这是伪与伪元素的区别。

::first-line::first-letter::before::after(其中已经出现了一会儿,可与单冒号,如果你需要IE8支持使用),伪元素 需要双冒号。

伪类自己选择实际元素,例如,您可以使用:first-child:nth-of-type(n)选择<p>div中的第一个或特定的。
(以及诸如:hover和的实际元素的状态:focus。)

伪元素的目标是像::first-line或那样的元素的子部分,这些元素::first-letter本身并不是元素。


实际上,这里有更好的描述:http : //bricss.net/post/10768584657/know-your-lingo-pseudo-class-vs-pseudo-element
也在这里:http : //www.evotech.net/blog/2007/ 05 /后v后是双冒号符号/


6
由于这种区别,“伪选择器”(来自问题)是一个荒谬的术语。永远不要使用它。
BoltClock

1
除非您同时谈论它们两者。或一般而言。
艾伯特2012年

1
这是对理论的很好解释,但是与实际问题有关吗?使用css3规范实际上有什么好处,就是css2将完成相同的工作-在更多浏览器中?
DRosenfeld '16

1
@Dominic谢谢-感谢您发表我的评论。毫无疑问,到目前为止(至少对此)CSS3标签的支持问题几乎不再存在。
DRosenfeld '16

1
@ BorisD.Teoharov具体来说,除了IE8之外,您可以使用相同的行为:after::after互换使用相同的行为,正如问题所指出的那样,IE8需要单个冒号。
多米尼克'18

13

类似的CSS选择器::after是一些虚拟元素,无法在DOM树中作为显式元素使用。它们被称为“ 伪元素 ”,用于在元素之前(或之后)(例如,)插入一些内容::before或者选择元素的某些部分(例如:)。当前只有5个标准伪元素:。::after::first-letterafter, before, first-letter, first-line, selection

在另一方面,还有其他类型的选择称为“的伪类,其被用于定义一个” 特殊状态的元件的(等作为:hover:focus:nth-child(n))。这些将选择DOM中所有现有元素。伪类是一长串,包含30多个项目。

最初(在CSS2和CSS1中),单冒号语法用于伪类和伪元素。但是,在CSS3中,该::语法替换了:伪元素的表示法,以更好地区分它们。

为了向后兼容,伪元素可以使用旧的单冒号语法,例如:after(浏览器仍然都支持带有一个分号的旧语法)。仅IE-8不支持新语法(如果要支持IE8,请使用单冒号)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.