考虑这个HTML:选择孩子的div,但没有嵌套
<div class="row compress">
<div class="col"></div>
<div class="col">
<div class="row">
<div class="col"></div>
</div>
</div>
</div>
现在我想的目标.col
的div是的.compress
第一级子:
.compress > .col {
padding: 0;
}
这个CSS不会影响嵌套.row
按计划.col
。 但是,如果我稍微改变HTML包括.compress
之间的元素和其子.col
像这样:
<div class="row compress">
<div>
<div class="col"></div>
<div class="col">
<div class="row">
<div class="col"></div>
</div>
</div>
</div>
</div>
现在我的CSS不工作,因为.col
不是直接孩子。
有没有办法像我的第一个例子那样选择.col
,但是使用第二个例子的HTML和.compress
和.col
之间的任意数量的元素?
作为最后一招,我可以为所有儿童设置样式,然后覆盖它们嵌套的元素,但这并不理想:
.compress .col {
padding: 0;
}
.compress .col .col {
padding: 1em;
}
我觉得你写的最后已经是正确的答案 - 我没有看到任何其他的方式来做到这一点。 – Johannes
@Johannes的问题是,如果我将'compress'类添加到嵌套的'.row'中,由于更具体的选择器'.compress .col .col'存在,样式将被覆盖。 – Coop