Answers:
这是伪类与伪元素的区别。
除::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后是双冒号符号/
:after
并::after
互换使用相同的行为,正如问题所指出的那样,IE8需要单个冒号。
类似的CSS选择器::after
是一些虚拟元素,无法在DOM树中作为显式元素使用。它们被称为“ 伪元素 ”,用于在元素之前(或之后)(例如,)插入一些内容::before
,或者选择元素的某些部分(例如:)。当前只有5个标准伪元素:。::after
::first-letter
after, before, first-letter, first-line, selection
在另一方面,还有其他类型的选择称为“的伪类,其被用于定义一个” 特殊状态的元件的(等作为:hover
,:focus
,:nth-child(n)
)。这些将选择DOM中所有现有元素。伪类是一长串,包含30多个项目。
最初(在CSS2和CSS1中),单冒号语法用于伪类和伪元素。但是,在CSS3中,该::
语法替换了:
伪元素的表示法,以更好地区分它们。
为了向后兼容,伪元素可以使用旧的单冒号语法,例如:after
(浏览器仍然都支持带有一个分号的旧语法)。仅IE-8不支持新语法(如果要支持IE8,请使用单冒号)。