【问题标题】:Packery and imagesLoaded plugin not working?Packery 和 imagesLoaded 插件不起作用?
【发布时间】:2014-12-07 17:51:18
【问题描述】:

我在网站上使用 Packery 并下载了 imagesLoaded,但我的图像在页面加载时仍然重叠。该网站可以看到here,我的代码如下:

$(document).ready(function() {
var $container = $container.packery({
   itemSelector: "packery-item"
});
$container.imagesLoaded( function() {
   container.packery();
});
});

任何帮助将不胜感激。

编辑: html 代码如下所示:

<div class="packery js-packery">

<div class="packery-item item"><img src="imgs/cdg5.jpg"></img></div>
<div class="packery-item text"><img src="imgs/text1.png"></img></div>
<div class="packery-item item w2"><img src="imgs/cdg3.jpg"></img></div>
<div class="packery-item gif"><img src="imgs/gif1.gif"></img></div>

</div>

等等

【问题讨论】:

  • 能否包含您的 html 代码?由于我的图块中的图像,我遇到了同样的问题。

标签: jquery jquery-isotope packery imagesloaded


【解决方案1】:

问题是打包是在您的项目中的图像加载之前执行的。因此,Packery 无法知道元素必须有多高。

解决方案是使用 jquery 检查是否已加载所有图像,然后执行 Packery。我已经找到了几种方法来做到这一点,here 的解决方案似乎不错。

解决此问题的另一种方法是在 css 中为图像提供固定高度或使用 height 属性。但是,您只能在图像具有相同高度或预先知道高度时才可以这样做。

更新: 这是第一个解决方案的示例代码:

$(document).ready(function(){

    var cnt = $("img").length;
    $("img").one("load", function() {
        cnt--;

        // If all images are loaded, init Packery
        if (cnt === 0)
        {
            $(".js-packery").packery({
               itemSelector: "packery-item"
            });
        }

    }).each(function() {
      if(this.complete) $(this).load();
    });

});

【讨论】:

  • 很抱歉,回调在当前的 jQuery 代码中究竟会去哪里?
  • 在您准备好的文档中,您应该放置一个循环来检查所有图像。如果所有这些图像都已加载,则初始化 Packery。我添加了一个示例代码。
  • 非常感谢您的帮助,但它似乎不适用于我的浏览器?
  • 第 12 行:“未捕获的类型错误:无法读取未定义的属性 'packery'”
  • 在使用变量之前,您需要将变量$container 设置为您的容器元素。我已经编辑了我的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2013-06-07
  • 2017-09-23
相关资源
最近更新 更多