【发布时间】:2015-06-27 13:37:05
【问题描述】:
我正在研究 CSS 和排版,并遇到了这个有趣的伪选择器概念。我使用过单冒号伪选择器,但不熟悉伪选择器的双冒号版本。 I understand 双冒号被称为伪元素而不是伪选择器 - 但为什么呢?又有什么区别呢?
我也知道单冒号得到更多支持,那么在什么情况下会使用双冒号伪元素呢?是否存在需要双冒号而单冒号无法完成工作的用例?那可能是什么情况?
“与伪元素不同,伪类可以出现在选择器链中的任何位置。” (来自链接的引用) - 我不知道“选择器链”是什么,但这似乎也是双冒号方法的另一个限制。如果它(在我的理解中)只是受支持较少的单冒号版本,为什么我需要使用双冒号?
编辑:它们在功能上似乎不一样:fiddle
<div><p>First Line</p></div>
<div><p>Second Line</p></div>
css
div:nth-child(1) > p {
color: green;
}
div::nth-child(2) > p {
color: blue;
}
【问题讨论】:
-
As MDN states: “有时你会看到双冒号 (::) 而不是一个 (:)。这是 CSS3 的一部分,也是一种区分伪类和伪元素的尝试. 大多数浏览器都支持这两个值。”
-
根据developer.mozilla.org/en/docs/Web/CSS/:nth-childnth-child 是一个伪类选择器,所以你应该使用单冒号,而不是双冒号(因为它不是伪元素选择器)。
-
当文档称它们为伪类时,你为什么称它们为伪选择器?
-
@Mr Lister:我怀疑他们对这个词的使用正是这个问题出现的原因。
标签: html css css-selectors