2011-09-06 64 views
47

我刚看到一个包含::before标签的CSS代码。我看着MDN看看::before是什么,但我真的不明白它。有人可以解释它的工作原理吗?它是否在我们通过CSS选择之前制作DOM元素?之前和之前有什么区别?

+1

AFAIK描述的那样,CSS工作组决定前缀伪元素与另外的结肠从中仅具有一个冒号伪类区分。 –

+5

...因为双冒号表示法在IE8中没有实现,所以在我们开始使用':: before'之前,我们必须等待'直到它从市场上被刷新(如2016年左右)。伟大的工作,微软'-.-' –

+1

自CSS1以来,伪元素一直存在。第一个伪元素是“:首字母”和“:第一行”。 – BoltClock

回答

12

这将伪元素与伪类区分开来。

伪类和伪元素之间的差在http://www.d.umn.edu/~lcarlson/csswork/selectors/pseudo_dif.html

+3

在CSS3中引入::之前的符号(带有两个冒号),以便建立伪类和伪元素之间的区分。浏览器也接受以下注释:在CSS 2中引入之前。来源:https://developer.mozilla。org/en-US/docs/Web/CSS/:: before前面是一个伪ELEMENT而不是伪CLASS(如:hover),两个冒号比较好(因此遵循CSS3标准)。 – JoostS

35

根据这些文档,它们是等效的:

element:before { style properties } /* CSS2 syntax */ 

element::before { style properties } /* CSS3 syntax */ 

唯一的区别是,该双冒号在CSS3使用,而单个结肠是旧版本。

推理:

的::之前在CSS 3被引入,以建立伪类和伪元件之间的 判别符号。浏览器 也接受符号:在引入CSS 2之前。

5

它们实质上是指同一件事。在CSS3中引入了::以帮助伪描述伪元素(如:before和after)和伪类(如:link和:hover)。

3

我检查了MDNw3.org,我能想出的是,::用于结构变化最好的,:用于造型

由于兼容性原因,它们当前可互换。

这似乎分离:link(例如),该样式<a>,从:before(其为结构变化)。

:是造型,::是结构。

相关问题