【发布时间】:2020-05-12 22:28:40
【问题描述】:
我看到了很多关于这个的问题,但没有答案(至少没有一个对我有帮助)。
我的设置非常简单 - 一个带有图像的流体容器(没有固定宽度)。
我在 CSS 中设置了每个 div 项的大小为 25%,并且我已将其中的图像设置为填充 div。
我已将同位素设置为仅在加载图像后运行。
问题是在初始加载时,元素没有正确定位。它们之间有一些填充物,甚至可以从容器中取出。仅当我调整窗口大小时,它们才能正确定位,即使我将窗口恢复为全屏。
你知道为什么会这样吗?
这是我的代码:
HTML:
<div id="main">
<div class="item"><img src="http://lorempixel.com/300/200/"></div>
<div class="item"><img src="http://lorempixel.com/440/300/"></div>
<div class="item"><img src="http://lorempixel.com/450/560/"></div>
<div class="item"><img src="http://lorempixel.com/410/270/"></div>
<div class="item"><img src="http://lorempixel.com/440/230/"></div>
<div class="item"><img src="http://lorempixel.com/470/460/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
<div class="item"><img src="http://lorempixel.com/430/780/"></div>
<div class="item"><img src="http://lorempixel.com/400/520/"></div>
<div class="item"><img src="http://lorempixel.com/420/120/"></div>
<div class="item"><img src="http://lorempixel.com/500/260/"></div>
<div class="item"><img src="http://lorempixel.com/200/200/"></div>
<div class="item"><img src="http://lorempixel.com/100/200/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
<div class="item"><img src="http://lorempixel.com/890/200/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
<div class="item"><img src="http://lorempixel.com/400/200/"></div>
</div>
CSS:
#main{margin-right:250px;}
#main .item { width: 25%;}
#main .item img { width:100%;height:100%;}
JS:
var $container = $("#main");
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: ".item",
});
});
谁能解释这种行为...?
更新
这是一个演示问题的 jsfiddle:http://jsfiddle.net/f35azgdj/2/
请注意元素之间是如何有一些空间的,这些空间在调整大小时会消失。 顺便说一句,由于某种原因,即使调整大小后水平间距仍然存在。
另一个更新
我认为这与滚动条有关,因为当我减少元素的数量并且它们适合没有滚动条时,它可以工作。
我认为这意味着在初始加载时 isotope 正在计算容器大小而不考虑滚动条从容器中占用的空间,因此它认为它具有比实际空间更大的空间,因此它相应地定位元素。 然后,由于元素使用 CSS 设置为容器的 25%,因此它们的大小是根据较小的容器大小(考虑到滚动条)计算的,因此它们之间会留有空白。
任何人都可以认为这是我这边的错误还是设置错误?
谢谢!
阿莫斯
【问题讨论】:
-
无法使用 Firefox 在 JSFiddle 上重现,请向我们提供有关您的浏览器的更多信息
-
铬。我也在 Firefox 上进行了测试,它做同样的事情。您将此添加到 jsfiddle 并且效果很好?
-
你点击了链接吗?
-
小提琴也适用于我(Linux Chrome)。疯狂猜测:你是在等到 dom 准备好了吗?
-
明白了。我点击了链接,发现它不起作用。我添加了所需的库。看这里:jsfiddle.net/f35azgdj/1
标签: jquery-isotope