【问题标题】:jquery help - initialize Masonry after all images have loadedjquery帮助-加载所有图像后初始化砌体
【发布时间】:2015-08-13 15:10:43
【问题描述】:

我正在使用砌体插件,但我的图像在页面首次加载时重叠。如果我改变浏览器的宽度,它们就会到位。开发人员告诉我执行以下操作,但我不确定如何“将其添加:正确添加到我的 custom.js 文件中。

我只是被告知:

// with jQuery
var $container = $(’#container’);

// initialize Masonry after all images have loaded
$container.imagesLoaded(function(){
    $container.masonry();
});

任何人都可以正确格式化此建议以便我可以使用它吗?

【问题讨论】:

  • 此代码示例在第一行代码中包含智能引号。您应该确保这些是实际代码中的常规单引号或双引号,而不是智能引号。

标签: jquery jquery-masonry masonry


【解决方案1】:

他希望你使用imagesLoaded plugin

加载那个插件

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/3.1.8/imagesloaded.pkgd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/3.3.1/masonry.pkgd.min.js"></script>

并按如下方式使用:

$(document).ready(function () {
    var $container = $("#container");

    $container.imagesLoaded(function () {
        $container.masonry();
    });
});

这是做什么的:

  1. 等待文档准备好
  2. 等待容器内的图片加载完毕
  3. 在容器上运行砌体

【讨论】:

  • 哇!感谢您的宝贵意见。您的建议似乎奏效了。
  • 可能会晚一点,但这是否适用于动态创建的内容和图表而不是图像?
  • @Wouter 不,据我所知。我假设您将 ajax 用于动态加载的内容。在这种情况下,您可以使用 ajax complete 事件。您的图表可能是由插件创建的,该插件可能还有一个在创建完成时触发的事件。
  • @Bram 我提出了一个问题
【解决方案2】:

您可以在$(window).load(function() 中插入代码,并在加载所有元素后进行人工初始化。

例子:

$(window).load(function(){
var $container = $(’#container’);
$container.masonry();
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多