0

如何将 LazyLoad 实施到我的 masonry+ImagesLoaded 布局?我有一个代码

HTML

<div class="masonry">
  <div class="masonry-sizer"></div>
    <div class="masonry-item">
        <img class="masonry-content" src="image1.png">
    </div>
</div>

JS

var $masonry = $('.masonry').masonry({
  itemSelector: '.masonry-item',
  percentPosition: true,
  masonry: {
    columnWidth: '.masonry-sizer'
  }
});
$masonry.imagesLoaded().progress( function() {
  $masonry.masonry('layout');
});

而且我无法让它与任何 LazyLoad 插件一起使用。问题是它必须使用 imagesLoaded 来实现,因为我没有特定的图像尺寸。我发现的所有解决方案都不起作用

4

1 回答 1

0

我已经使用 LazySizes 插件制作了这个,虽然没有 imagesLoaded,但它现在应该可以工作

HTML

<div class="masonry">
  <div class="masonry-sizer"></div>
    <div class="masonry-item">
        <img class="masonry-content lazyload" src="low_quality_image1.png" data-src="image1.png">
    </div>
</div>

JS

$('.masonry').each(function(){
  var $module = $(this);
  var update = function(){
    $module.masonry('layout');
  };

  this.addEventListener('load', update, true);

  $module.masonry();
});
于 2021-07-12T08:17:17.257 回答