3

这是我在 StackOverflow 上的第一个问题,所以请原谅我可能做出的任何失礼。

我花了几天时间试图自己解决这个问题,但无济于事。我已经尝试了在 stackoverflow 和其他地方找到的几个代码片段,以尝试解决这个问题。

我正在使用 Skeleton 和 Masonry 的组合来构建我的投资组合网站。当我最初加载投资组合时,只有 1 个小图像。当我第一次调整大小时,它显示所有列,但图像重叠。当我再次调整大小时,大多数瓷砖的高度都是正确的,但较长的瓷砖(JSTOR)仍然被切断。在第三次调整大小(以及所有后续访问)时,磁贴会正确显示。

((编辑:在页面刷新时(不再单击链接,但浏览器刷新)网格也变得不稳定......有时会显示所有列,但有些图像是堆叠的,有时只显示 1 张小图片。))

我对 JS 或 jQuery 没有最透彻的了解,所以我的很多修复尝试可能都很笨拙。在这一点上,我的假设是砌体在加载图像之前创建网格......我已经尝试了各种代码位来解决这个问题,包括 Desandro 自己的图像加载片段和 StackOverflow 上的其他响应,比如这个

现在我的网站应该在new.rdhalexander.com 上。我不确定还需要什么其他信息....但我会密切关注这一点。

4

3 回答 3

7

更新: 参考@Stefan 和他的例子。显然有一种新方法。

在砌体决定获得它们的尺寸之前,似乎图像还没有完全加载。

您可以使用一些简单的 css 进行测试,您可能会看到延迟加载,

.tile {
   position:relative !important;
}

并尝试长时间超时,例如

setTimeout(function(){
  .. masonry blah ..
},1000);

然后解决时间问题,这是砌体的作者建议的。

$(window).load( function(){   $('#content').masonry(); });

关联

于 2013-08-19T16:55:01.587 回答
3

如果有人从谷歌到这里,除了手动强制调整大小事件外,没有其他任何东西对我有用

window.dispatchEvent(new Event('resize'));
于 2016-01-19T03:09:29.287 回答
0

为什么你们不都使用 Masonry Layout功能?

官方声明:

当项目的大小发生变化并且所有项目都需要重新布局时,布局很有用。

所以这会在一段时间后重新启动 Masonry。像这样你可以打电话给 Masonryready

$grid = $('.grid-class').masonry();

setTimeout(function() {
  $grid.masonry('layout');
}, 500);
于 2019-10-17T08:38:06.473 回答