【发布时间】:2017-11-08 14:21:33
【问题描述】:
我试图在纯 CSS 中的 那些仅可见 的 div 元素之后明确中断。由于 CSS 中没有这样的 :visible 选择器,我尝试在应该隐藏的 div 元素中添加一个名为 hidden 的类。
.box.hidden {
background: red;
}
.box:not(.hidden):nth-child(4n+1) {
border: 5px solid green;
}
/* try then without :not() and see the difference
.box:nth-child(4n+1) {
border: 5px solid green;
}
*/
<div class="box">Hello</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box">Hello</div>
<div class="box">Hello</div>
<div class="box">Hello</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box hidden">Dont show</div>
<div class="box">Hello</div>
<div class="box hidden">Dont show</div>
<div class="box">Hello</div>
<div class="box">Hello</div>
但我无法让它工作,似乎 nth-child(4n+1) 只听 .box 而不是 :not( .hidden) 规则。
如果没有 javascript/jQuery 就无法做到这一点,那么作为替代方案的简单 jQuery 选择器解决方案也可以作为一种解决方案。
如何做到这一点?
【问题讨论】:
-
您的问题不清楚。你想要
clear: both;用于所有可见的 div 吗? -
我已将您的代码转换为 sn-p,因此我们可以看到发生了什么,但我不得不猜测
.box和.hidden的样式。如有需要请更正 -
@Phil 我认为那里不需要
.box { float: left; margin: 1ex; }。它完全改变了以前的输出 -
@Karem 看起来它本来可以作为 4 级选择器。在那之前,我想你必须坚持使用 jQuery。