【发布时间】:2015-11-28 01:46:23
【问题描述】:
我有几个随机块。每当一个块落入新行时,我都会让它看起来不同。当用户点击一个按钮时,我用display:none隐藏了几个块,问题就出现了。 nth-child 选择器还计算隐藏元素。
有没有办法忽略那些特定的块,所以每一行都有不同的样式?这是一个类似场景的例子。
$('.hide-others').click(function () {
$('.css--all-photo').toggleClass('hidden');
})
.board-item--inner {
height:200px;
background:tomato;
text-align:center;
color:#fff;
font-size:33px;
margin-bottom:15px;
border:2px solid tomato;
}
@media (min-width:768px) and (max-width:991px) {
.board-item:nth-child(2n+1) .board-item--inner {
border:2px solid #000;
background:yellow;
color:#000;
}
}
@media (min-width:992px) and (max-width:1199px) {
.board-item:nth-child(3n+1) .board-item--inner {
border:2px solid #000;
background:yellow;
color:#000;
}
}
@media (min-width:1200px) {
.board-item:nth-child(4n+1) .board-item--inner {
border:2px solid #000;
background:yellow;
color:#000;
}
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="container">
<div class="form-group">
<button class="btn btn-info hide-others" type="button">Hide others</button>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">1</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">2</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item css--all-photo">
<div class="board-item--inner">3</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">4</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">5</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item css--all-photo">
<div class="board-item--inner">6</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">7</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item css--all-photo">
<div class="board-item--inner">8</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">9</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">0</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 board-item photos-board-item">
<div class="board-item--inner">10</div>
</div>
</div>
<div>
只需通过 sn-p 或 EXTERNAL FIDDLE,您就会得到我的问题。
我专门寻找纯 CSS 解决方案。 请为您的答案提供一个小提琴!我无法永久删除这些块,我的用户可以选择在按钮单击时过滤文件,这就是隐藏和显示场景的原因。
【问题讨论】:
-
在您的情况下,您只需要为行中的第一个项目着色。我说的对吗?
-
是的,你没看错,实际上,它们是不等高的块,我在每个新行中添加
clear:float,以防止它流向错误的方向 -
只需使用用户 ID 作为类名...并以该类为目标来切换可见性
-
不...原来我错了。
:nth-of-type和:nth-child将计算所有相同类型的元素,无论它们是否隐藏。可能没有针对此问题的纯 CSS 解决方案。 -
我试过
.board-item:not(.hidden):nth-of-type(count) .board-item--inner也没有用。
标签: javascript jquery html css css-selectors