如何使同位素画廊拉伸周围的容器?

How to make an Isotope gallery stretch the surrounding container?

提问人:Pekka 提问时间:11/3/2017 最后编辑:Cy RossignolPekka 更新时间:12/29/2017 访问量:335

问:

我有一个同位素砌体画廊。这完全是普通的,没什么特别的:

enter image description here

现在在内部,Isotope 使用(可能就像其他所有砌体库一样)将元素放置在画廊内:position: absolute

enter image description here

问题在于,当砌体元素被定位时,周围的同位素元素不会调整大小,这意味着任何出现在砌体图库之后的图元都不会被推下,在砌体图库下方,并且图库图元与其下方的图元重叠。<ul><ul>

这可以通过给页脚(现在只是一个愚蠢的 HTML 元素)一些 jQuery 魔法来解决,但我想避免这种情况。

有没有办法快速获取同位素砌体画廊的高度并将其应用于周围的元素,以使布局按预期工作?<ul>

javascript jquery html css jquery-isotope

评论

0赞 Cy Rossignol 12/29/2017
是否可以提供一些代码来重现这一点?如果没有 MCVE,就很难进行调试。如果你这样做,我很乐意更新我的答案。另外,该项目使用哪个版本的 Isotope?
0赞 Pekka 12/29/2017
确实,就像你说的 - 问题一路上自行解决(不记得是什么原因造成的,但这是你提到的原因之一),然后忘记删除这个问题!
1赞 Cy Rossignol 12/31/2017
很高兴它成功了!如果您认为这个问题对其他人没有帮助,我不介意您删除该问题。忍不住盯着片段中移动的网格......
0赞 Pekka 12/31/2017
嘿!事实证明,我无法再删除它,因为它已得到答复。那好吧。

答:

1赞 Cy Rossignol 12/29/2017 #1

同位素确实会自动为我们调整容器的大小,如下面的简单示例所示。CSS 规则似乎可能干扰了库的样式或高度计算。在初始化网格之前尚未加载的图像也可能会降低高度。

for (var i = 1; i <= 15; i++) {
    $('#grid').append($('<li class="item">').addClass('item' + i % 2));
}

var $grid = $('#grid').isotope({ itemSelector: '.item', layoutMode: 'masonry' });

setInterval(function () {
    if (i++ % 3 == 0) { 
        $grid.isotope({ filter: '*' });
    } else {
        $grid.isotope({ filter: '.item' + i % 2 });
    }
}, 1000);
#grid { border: 1px solid black; padding: 5px; }
.item { margin: 5px; padding: 5px; border: 1px dashed grey; list-style-type: none; }
.item0 { width: 50px; height: 30px; }
.item1 { width: 50px; height: 50px; }
<ul id="grid"></ul>
<p>Element below</p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://npmcdn.com/isotope-layout@3/dist/isotope.pkgd.js"></script>