【问题标题】:Masonry- divs overlapping with imagesLoaded pluginMasonry- div 与 imagesLoaded 插件重叠
【发布时间】:2015-06-12 17:39:54
【问题描述】:

我有 Masonry 插件和 Image Loaded 插件,但似乎 imagesloaded 不起作用。当我刷新页面时,div 重叠。只有在调整浏览器窗口大小后,重叠才会自行纠正。有时在刷新时它似乎确实有效......这是非常随机的。我是 jQuery 和 javascript 的新手。

我在这里托管了单个 html 页面,因此您可以看到我在说什么:masonry test

这是我的初始化方式,但是如果您查看上面链接的源代码,您可以看到完整的代码,因为问题可能出在其他地方。

$(document).ready(function() {

    // Initialize Masonry
    $('#content').masonry({
        columnWidth: 320,
        itemSelector: '.item',
        isFitWidth: true,
        isAnimated: true,
    }).imagesLoaded(function() {
        $(this).masonry('reload');
    }); 
});

【问题讨论】:

    标签: javascript jquery html jquery-plugins jquery-masonry


    【解决方案1】:

    问题是imagesLoaded() 在砌体插件完成初始化之前被调用。如果您在测试页面上查看浏览器控制台,您会看到一个错误。

    查看开发者网站上的example,了解如何将imagesLoaded 与砖石一起使用。您应该等到图像加载完成后再初始化砌体,而不是链接函数。

    $('#content').imagesLoaded(function() {
        $('#content').masonry({
            columnWidth: 320,
            itemSelector: '.item',
            isFitWidth: true,
            isAnimated: true,
        });
    });
    

    您可能可以按照您最初尝试的方式进行操作(即链接方法),但您不能在 imagesLoaded 函数中使用 $(this)。这个函数是一个回调,所以它不是同步执行的。如果您将功能更改为

    $('#content').masonry('reload');
    

    它可能会按照你想要的方式工作,但我还没有测试过。

    【讨论】:

    • 是的,已修复,谢谢。我从一个使用包含 imagesLoaded 的旧砌体插件的演示中获得了初始化代码,这与您必须单独链接 imagesLoaded 插件的较新插件不同。也许这就是它被这样写的原因。
    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多