我
::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用。
难度:
相关知识点:
单冒号(:
)用于 CSS3 伪类,双冒号(::
)用于 CSS3 伪元素。(伪元素由双冒号和伪元素名称组成)双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存在的伪元素写法,比如 :first-line
、:first-letter
、:before
、:after
等,而新的在 CSS3 中引入的伪元素则不允许再支持旧的单冒号的写法。
想让插入的内容出现在其它内容前,使用 ::before
,否者,使用 ::after
;在代码顺序上,::after
生成的内容也比 ::before
生成的内容靠后。如果按堆栈视角,::after
生成的内容会在 ::before
生成的内容之上。
回答:
在 css3 中使用单冒号来表示伪类,用双冒号来表示伪元素。但是为了兼容已有的伪元素的写法,在一些浏览器中也可以使用单冒号来表示伪元素。
伪类一般匹配的是元素的一些特殊状态,如 hover
、link
等,而伪元素一般匹配的特殊的位置,比如 after
、before
等。