使用瀑布流插件masonry,图片未加载完就会出现重叠现象,怎么解决?

发布于 2022-09-12 04:38:51 字数 1234 浏览 50 评论 0

//使用了imagesLoaded插件来判断图片是否加载完毕
var $grid = $('ul#grid');
$grid.imagesLoaded().done( function(instance) {
    // 加载完成
    $grid.masonry({
        // fitWidth: true,
        // initLayout: false,
        itemSelector: '.item',
        columnWidth: '.item',
        percentPosition: true,
    });
})

isImgLoad(function () {
    $grid.masonry("layout");
});

// 判断图片加载的函数
var t_img;
var isLoad = true;
function isImgLoad(callback) {
    $('.img').each(function () {
        if (this.height === 0) {
            isLoad = false;
            return false;
        }
    });
    if (isLoad) {
        clearTimeout(t_img);
        callback();
    } else {
        isLoad = true;
        t_img = setTimeout(function () {
            isImgLoad(callback);
        }, 500);
    }
}

//AJAX滚动加载部分
var $boxes = $(data); // data为数据
$grid.append($boxes).masonry("appended", $boxes, true);
//追加元素
$grid.imagesLoaded().done( function(instance) {                    isImgLoad(function () {                                            $grid.masonry();
    })
})

代码如上,当图片没有加载完成的时候,列表的图片就会重叠在一起。但我用网上搜来的判断图片加载的函数,好像没啥作用?用图片加载插件,CONSOLE.LOG显示都是加载完成,但图片还是会重叠。我不知道哪里出的问题,怎么样解决图片加载慢或网速慢的情况下能够保持不出现图片重叠的情况发生呢?实在搞不定了,还望大神帮忙解决!~非常感谢!~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执妄 2022-09-19 04:38:51

masonry 不熟
提供两个解决方案的思路

1 如果图片显示没有顺序,可以打乱的
加载完成的 图片,才加进瀑布流,未加载完成的,不加入瀑布流

2 图片必须按照顺序,不能打乱
已加载完成的图片之前的所有图片都加载完了,才显示这个图片,否则为隐藏

叹沉浮 2022-09-19 04:38:51

参考(用 masonry 图片重叠 关键字就搜出来了):

  1. https://www.jianshu.com/p/cff...
  2. https://blog.csdn.net/weixin_...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文