我试图用第n个孩子来选择其他所有两个div。
这意味着,当有一个div 1,2,3,4,5和6的集合时 - 我需要选择1,2,5和6.其他两个。
CSS:
#navigation .menuItem:nth-child(3n+3) {
background-color: #ccc;
}
HTML:
<div class="menuItemWrapper">
<div class="menuItem"><a href="shop.html">Shop Online</a></div>
<div class="menuItem"><a href="blog.html">The Blog</a></div>
<div class="menuItem"><a href="lookbook.html">LookBook</a></div>
<div class="menuItem"><a href="gift-finder.html">Gift Finder</a></div>
<div class="menuItem"><a href="about.html">About Us</a></div>
<div class="menuItem sub"><a href="freebies.html">Tutorials</a></div>
<div class="menuItem sub"><a href="faq.html">FAQ</a></div>
<div class="menuItem sub"><a href="contact.html">Contact</a></div>
答案 0 :(得分:12)
您将无法使用单个选择器执行此操作,但您可以使用两个选择器:
#navigation .menuItem:nth-child(4n+1), #navigation .menuItem:nth-child(4n+2) {
background-color: #ccc;
}
答案 1 :(得分:1)
@Francesca这里有一个简单而强大的工具:cth-trickes的第n个测试人员,它使选择者的生活更轻松css-tricks nth-child-tester
答案 2 :(得分:1)
扩展Chowlett的响应以管理“跳过”元素的可能性。
将你想要皮肤的元素从div更改为nav(这几乎是相同的)。
使用nth-of-type选择器而不是nth-child引用它们。并使选择器更具体,以避免更改导航的背景
.menuItemWrapper div.menuItem:nth-of-type(4n+1),
.menuItemWrapper div.menuItem:nth-of-type(4n+2) {
background-color: #ccc;
}
(跳过第5项)
答案 3 :(得分:1)
有一个简单的黑客:
首先:为排队的<div>
.menuItemWrapper>div { background-color: #fff; }
其次:选择每个第4个元素并在其后直接应用替代背景<div>
元素。这使得成对。 -1从正确的地方开始。
.menuItemWrapper>div:nth-child(4n-1) { background-color: #ccc; }
.menuItemWrapper>div:nth-child(4n-1)+div { background-color: #ccc; }
享受!
答案 4 :(得分:0)
我认为我根据Chowlett的建议找到了解决问题的方法:http://jsfiddle.net/Z8Uxt/10/。
你需要的是将分隔符更改为不同的元素类型(例如:p而不是div或者甚至是语义div而不是li)。
该解决方案使用:nth-of-type
作为:nth-child
计算每个孩子,无论其类别如何。