这与其说是一个答案,不如说是一个非答案,即一个例子说明了为什么上面投票率很高的答案之一实际上是错误的。
我认为这个答案看起来不错。事实上,它给了我我一直在寻找的东西::nth-of-type
就我的情况而言,它是有效的。(所以,谢谢你,@Bdwey。)
我最初阅读了@BoltClock 的评论(它说答案基本上是错误的)并驳回了它,因为我检查了我的用例,并且它有效。然后我意识到@BoltClock 拥有超过 300,000 的声誉(!)并且有一个他声称是 CSS 大师的个人资料。嗯,我想,也许我应该仔细看看。
结果如下:div.myclass:nth-of-type(2)
并不意味着“div.myclass 的第二个实例”。相反,它的意思是“div 的第二个实例,它还必须有 'myclass' 类”。当您的实例之间存在干预div
s时,这是一个重要的区别。div.myclass
我花了一些时间来解决这个问题。所以,为了帮助其他人更快地理解它,我写了一个例子,我相信它比书面描述更清楚地展示了这个概念:我劫持了h1
,h2
和元素本质上是s。我在其中一些上放了一个类,将它们分组为 3 个,然后使用. (但是,如果你仔细阅读,你应该问“什么的第一个、第二个和第三个实例?”)。我还在一些组中插入了不同(即不同级别)或相似(即相同级别)的未分类元素。h3
h4
div
A
h?.A:nth-of-type(?)
h
h
请特别注意最后一组 3。这里,h3
在第一个和第二个元素之间插入了一个未分类的h3.A
元素。在这种情况下,没有第 2 种颜色(即橙色)出现,第 3 种颜色(即绿色)出现在 的第 2 个实例上h3.A
。这表明n
inh3.A:nth-of-type(n)
计算的是h3
s,而不是h3.A
s。
嗯,希望有帮助。谢谢@BoltClock。
div {
margin-bottom: 2em;
border: red solid 1px;
background-color: lightyellow;
}
h1,
h2,
h3,
h4 {
font-size: 12pt;
margin: 5px;
}
h1.A:nth-of-type(1),
h2.A:nth-of-type(1),
h3.A:nth-of-type(1) {
background-color: cyan;
}
h1.A:nth-of-type(2),
h2.A:nth-of-type(2),
h3.A:nth-of-type(2) {
background-color: orange;
}
h1.A:nth-of-type(3),
h2.A:nth-of-type(3),
h3.A:nth-of-type(3) {
background-color: lightgreen;
}
<div>
<h1 class="A">h1.A #1</h1>
<h1 class="A">h1.A #2</h1>
<h1 class="A">h1.A #3</h1>
</div>
<div>
<h2 class="A">h2.A #1</h2>
<h4>this intervening element is a different type, i.e. h4 not h2</h4>
<h2 class="A">h2.A #2</h2>
<h2 class="A">h2.A #3</h2>
</div>
<div>
<h3 class="A">h3.A #1</h3>
<h3>this intervening element is the same type, i.e. h3, but has no class</h3>
<h3 class="A">h3.A #2</h3>
<h3 class="A">h3.A #3</h3>
</div>