当我将div与我使用nth-child的对象一起添加时,它似乎有问题。
我会感激任何帮助。
<html>
<style>
.documents > a:nth-child(2) {
border:1px solid red;
}
</style>
<div class="documents">
<!-- NO DIVS: WORKS FINE -->
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
</div>
<br />
<div class="documents">
<div></div><!-- ONE DIV: STARTS WITH THE FIRST OBJECT -->
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
</div>
<br />
<div class="documents">
<div></div><div></div><!-- TWO DIVS: DOES NOT WORK -->
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
</div>
</html>
答案 0 :(得分:20)
这不是错误的行为;对于:nth-child()
如何运作,我们常常会产生误解。
当您将div
个元素添加到开头时,您正在寻找的a
不再成为第二个孩子(这是:nth-child(2)
的含义)。这是因为当你添加一个div
时,它就会成为第一个孩子;反过来,第一个a
成为第二个孩子,第二个a
成为第三个孩子。当您添加第二个div
时,div
成为第二个孩子,而a
元素同样会向前推进另一个步骤,因此a:nth-child(2)
不再匹配任何内容。
如果您正在寻找第二个a
而不管其兄弟姐妹中的任何其他元素类型,请改用a:nth-of-type(2)
。
答案 1 :(得分:0)
nth-child 计数时考虑所有子元素,并仅设置与所选元素匹配的元素的样式。 另一方面,nth-of-type,在计数时只取子元素 匹配我们正在搜索的元素。