CSS 2.1 :after和 CSS 3 ::after伪选择器之间有什么功能上的区别吗(除了旧版浏览器不支持 ::after之外) ?是否有任何实际的理由使用新的规范?
:after
::after
这是伪 同学们和伪 元素的区别。
除了 ::first-line、 ::first-letter、 ::before和 ::after(它们已经出现了一段时间,如果需要 IE8支持,可以使用单个冒号) ,伪 元素 要求双冒号。
::first-line
::first-letter
::before
伪类 选择实际元素本身,例如,您可以使用 :first-child或 :nth-of-type(n)来选择 div 中的第一个或特定的 <p>。 (还有像 :hover和 :focus这样的实际元素的状态。)
:first-child
:nth-of-type(n)
<p>
:hover
:focus
伪元素 的目标是像 ::first-line或 ::first-letter这样的元素的子部分,它们本身并不是元素。
实际上,这里更好的描述是: http://bricss.net/post/10768584657/know-your-lingo-pseudo-class-vs-pseudo-element 同样在这里: < a href = “ http://www.evotech.net/blog/2007/05/after-v-after-what-is-double-冒号/”rel = “ norefrer”> http://www.evotech.net/blog/2007/05/after-v-after-what-is-double-colon-notation/
像 ::after这样的 CSS 选择器是一些在 DOM 树中不能作为显式元素使用的虚拟元素。它们被称为“ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~”,用于 插入元素之前/之后的一些内容(例如: ::before,::after) 或者,选择一些部分元素(例如: ::first-letter)。目前只有5个标准的伪元素: after, before, first-letter, first-line, selection。
after, before, first-letter, first-line, selection
另一方面,还有其他类型的选择器,称为“ 翻译: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对:”,用于定义元素的 特别州(如 :hover、 :focus、 :nth-child(n))。它们将选择 DOM 中的整个现有元素。伪类是一个包含30多个项目的长列表。
:nth-child(n)
最初(在 CSS2和 CSS1中) ,单冒号语法用于伪类和伪元素。但是,在 CSS3中,为了更好地区分伪元素,::语法替换了 :符号。
::
:
对于向下兼容来说,旧的单冒号语法对于像 :after这样的伪元素来说是可以接受的(浏览器仍然支持旧的单冒号语法)。只有 IE-8不支持新的语法(如果你想支持 IE8,可以使用单冒号)。