我有一堆元素的类名红色,但我似乎不能选择class="red"使用以下CSS规则的第一个元素:
.home .red:第一个孩子{
边框:1px纯红色;
}
< div class = "家" >
< span >等等> < /跨度
< p class = "红色" >第一个< / p >
< p class = "红色" >第二< / p >
< p class = "红色" > < / p >第三
< p class = "红色" >第四< / p >
< / div >
这个选择器出了什么问题,我如何纠正它,以类红色为目标的第一个孩子?
正确答案是:
.red:first-child, :not(.red) + .red { border:5px solid red }
第一部分:如果元素是父元素的第一个,并且类为“red”,它将得到border。
第二部分:If "。红色“元素不是其父元素的第一个,而是紧跟着一个没有类的元素”。红色”,它也应该配得上说边界的荣誉。
不然就是没发生。
菲利普·多布梅尔的回答,虽然被接受,但并不正确-见附件小提琴。
BoltClock的答案可以工作,但不必要地定义和覆盖样式
(特别是一个问题,否则它将继承一个不同的边界-你不想声明other to border:none)
编辑:
如果你有“红色”后面的非红色几次,每个“第一个”红色将得到边界。为了防止这种情况,我们需要使用BoltClock的答案。看到小提琴
出于某种原因,上述答案似乎都没有解决父母真正的第一个和唯一的第一个孩子的情况。
#element_id > .class_name:first-child
如果您只想将样式应用于此代码中的第一个子类,那么以上所有答案都将失败。
<aside id="element_id">
Content
<div class="class_name">First content that need to be styled</div>
<div class="class_name">
Second content that don't need to be styled
<div>
<div>
<div class="class_name">deep content - no style</div>
<div class="class_name">deep content - no style</div>
<div>
<div class="class_name">deep content - no style</div>
</div>
</div>
</div>
</div>
</aside>