我知道我可以像这样计算“可见”列表项的数量:
var numOfVisibleDevices = $('.row-fluid ul.thumbnails li:visible').length;
而且我知道我可以通过以下方式定位第 n 个项目(我必须支持 IE8,所以不能只使用 CSS3):
$('.row-fluid ul.thumbnails li.span6:nth-child(2n + 3)').addClass('span-left');
$('.row-fluid ul.thumbnails li.span4:nth-child(3n + 4)').addClass('span-left');
$('.row-fluid ul.thumbnails li.span3:nth-child(4n + 5)').addClass('span-left');
但我不知道如何将这两件事结合起来,所以我计算了列表中可见项目的数量,然后将“span-left”类应用于可见项目的第 n 个孩子。
因为我使用的是 Bootstrap,span6 项目将适合 2 一行,span4 将适合 3,span3 将适合 4。因此,我正在添加类以便我可以清除第 3 个项目的浮动(对于 span6) ,第 4 项(对于 span4)和第 5 项(对于 span3)。这样做的原因是每个列表项的高度可以不同,但我不希望在它们上设置最小高度。这样,每当列表在下一行换行时,下一行的第一项将清除浮动,并且布局总是很好。
HTML 只是一个列表:
<div class="row-fluid">
<ul class="thumbnails">
<li class="span4">Some content</li>
<li class="span4">Some content</li>
<li class="span4">Some content</li>
</ul>
</div>