我正在尝试使用类.box
选择正文中的第一个元素,但不包括类.topbar
中的元素。
我正在使用这种方法:not(.topbar)>.box
并选择所有元素.box
,不包括.topbar
内的元素,但我只想要第一个。
我知道我可以更容易地选择它,但我想知道我怎么能这样做...
注意:元素数量未修复,因此.topbar
可能存在或不存在...
示例:
<body>
<div class="topbar">
<div class="box">
...
</div>
</div>
<div class="box"> <!-- Just want to select this one -->
...
</div>
<div class="box">
....
</div>
</body>
谢谢!
答案 0 :(得分:3)
我认为你可以把它分成两种情况: 1)就像你上面的例子一样,topbar是第一个孩子,box是第二个孩子 2)如果topbar不存在,那么box就是第一个孩子
.topbar + .box, body > .box:first-child {background:red;}
答案 1 :(得分:2)
这是一种更强大的方法。
考虑原始HTML代码段的更通用版本:
<div class="topbar">
<div class="box">In the topbar...</div>
<div class="box">In the topbar...</div>
</div>
<div>temp</div>
<div class="box">Just want to select this one...</div>
<div class="box">a second one....</div>
<div>temp</div>
<div class="box">a third one....</div>
<div>temp</div>
<div class="box">a third one....</div>
并应用以下CSS:
body > div.box
{
background-color: beige;
}
body > div.box ~ div.box
{
background-color: pink;
}
请参阅演示:http://jsfiddle.net/audetwebdesign/Rufcc/
第一条规则选择div.box
的所有body
元素,并应用背景颜色。
然后第二个规则选择第一个之后的所有div.box
元素,然后将背景颜色覆盖为某个默认值(可能是transparent
)。
这种方法的主要优点是它可以挑选出第一个div.box
元素,无论其前面有多少其他元素。
答案 2 :(得分:1)
.topbar + .box { background:red; }