【发布时间】:2011-07-22 16:04:15
【问题描述】:
是否可以让 nth-child 伪选择器与特定类一起使用?
看这个例子: http://jsfiddle.net/fZGvH/
我想让第二个 DIV.red 变成红色,但它没有按预期应用颜色。
不仅如此,当你指定它时,它会将第 5 个 DIV 更改为红色:
div.red:nth-child(6)
当你指定这个时,它会将第 8 个 DIV 更改为红色:
div.red:nth-child(9)
它似乎落后了一个 DIV。示例中只有 8 个 DIV 标签,所以我不知道为什么 nth-child(9) 甚至可以工作。使用 Firefox 3.6 进行测试,但在我的实际生产代码中,Chrome 中也会出现同样的问题。我不了解这应该如何工作,希望得到澄清。
此外,这会将第 6 个 DIV 更改为红色,但我真正想要的是将第二个 DIV.red 更改为红色:
div.red:nth-of-type(6)
而且我不明白为什么 nth-child() 和 nth-of-type() 响应不同,因为文档中只有八个相同类型的标签。
【问题讨论】:
-
div.red:nth-child(9)不会导致任何东西变红。我在你的小提琴上试过(请注意,你可以将 CSS 放在 CSS 面板中,而不是放在<style>标签中)。 -
这很奇怪。您是否在小提琴之外尝试过?似乎身体标签没有充当父母的东西发生了一些事情。我在所有标签周围添加了一个 作为容器,并且 nth-child 选择器按预期运行。@ckaufman,是的,我确实在本地尝试过,这就是为什么(正如@BoltClock 指出的那样)一切都在一个窗格中。我来回复制+粘贴,试图找出问题所在。但它的工作原理是一样的。 HTML 是有效的,但有些奇怪,它在我正在编码的应用程序中以相同的方式工作。即使有正确的标题 [jsfiddle.net/runnC/],代码的工作方式也是一样的——
(9)实际上是(8),(3)实际上是(2),等等。@BoltClock,请再试一次,当我尝试div.red:nth-child(9)时,第 8 个 div 变为红色。div:nth-child(2)将第一个 div 变为橙色。无法弄清楚,但正如我所说,它在应用程序中的工作方式相同,有点奇怪。将其标记为最初在一周后发布的问题的欺骗,但主要是因为该问题更笼统,因此包含比此问题更规范的答案。
标签: css css-selectors