使用 Masonry+ImagesLoaded 的 LazyLoad

LazyLoad with Masonry+ImagesLoaded

如何为我的 masonry+ImagesLoaded 布局实现 LazyLoad? 我有一个代码

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 来实现,因为我没有特定的图像尺寸。我发现的所有解决方案都行不通

我使用 LazySizes 插件制作了这个,虽然没有加载图像,但它现在可以正常工作

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();
});