Css 第n个子计算错误

Css 第n个子计算错误,css,css-selectors,Css,Css Selectors,我有一套div,我希望每三个div的右边都没有边距。当然,我认为第n个孩子(3n)可以工作。事实并非如此。我做了一些研究,在计算要影响哪些时,它似乎在计算父div中的所有元素。其结果是,它的目标不是每三个div,而是每三个恰好是div的元素。要详细说明,请看一下这个 补偿不相关元素的唯一方法是使用不同的选择器。:nth-child()选择器在这里按预期工作,因为p和h1元素都是div元素的同级元素,共享同一父元素(即body元素) 在本例中,由于它们之间的唯一区别是元素类型: 在更复杂的情况下,

我有一套div,我希望每三个div的右边都没有边距。当然,我认为第n个孩子(3n)可以工作。事实并非如此。我做了一些研究,在计算要影响哪些时,它似乎在计算父div中的所有元素。其结果是,它的目标不是每三个div,而是每三个恰好是div的元素。要详细说明,请看一下这个


补偿不相关元素的唯一方法是使用不同的选择器。
:nth-child()
选择器在这里按预期工作,因为p和h1元素都是div元素的同级元素,共享同一父元素(即body元素)

在本例中,由于它们之间的唯一区别是元素类型:

在更复杂的情况下,例如当您有具有不同类名、属性等的div元素时,您将无法使用纯CSS仅计算所需的元素。这是因为没有
:nth-of-class()
或其他类似的选择器,也没有只计算与某个任意条件/选择器匹配的元素的方法。有关更详细的解释,请参见我对的回答


jQuery在某种程度上弥补了这个限制,但它的工作原理与
:nth-child()
:nth-of-type()
非常不同,并且可能并不总是提供足够的替换。没有与jQuery的
:eq()
等价的CSS。有关差异的解释,请参阅。

您可以使用
nth of type
选项
n类型
选择与
n类型
匹配的该类型元素。因此,在下面的示例中,它将选择每隔3个
div
元素

div:nth-of-type(3n){
    background-color: blue;
    color: white;
}

div:nth-of-type(3n) {
    background-color: blue;
    color: white;
}
div:nth-of-type(3n){
    background-color: blue;
    color: white;
}