【问题标题】:How can I use Masonry multiple times per page with the same class name?如何在每个页面中多次使用具有相同类名的 Masonry?
【发布时间】:2016-08-04 11:07:29
【问题描述】:

我需要每页有多个砌体网格。我正在使用 wordpress 循环生成代码,因此每个 div 容器都有相同的类名。

有没有办法在所有同名的 div 容器上调用 Masonry?

html

 <!--Masonry 1-->
<div class="print-slider">
    <div class="print-slider-sizer"></div>
    <div class="gutter-sizer"></div>
    <div class="print-slider-item"></div>
    <div class="print-slider-item"></div>
    <div class="print-slider-item"></div>
    <div class="print-slider-item"></div>
</div>

<!--Masonry 2-->
<div class="print-slider">
    <div class="print-slider-sizer"></div>
    <div class="gutter-sizer"></div>
    <div class="print-slider-item"></div>
    <div class="print-slider-item"></div>
    <div class="print-slider-item"></div>
    <div class="print-slider-item"></div>
</div>

JS

var grid = document.querySelector('.print-slider');
var msnry;

imagesLoaded( grid, function() {
  // init Isotope after all images have loaded
  msnry = new Masonry( grid, {
    itemSelector: '.print-slider-item',
    columnWidth: '.print-slider-sizer',
    gutter: '.gutter-sizer',
    percentPosition: true,
  });
});

这是解决问题的代码笔:

http://codepen.io/anon/pen/OXBrPb

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery wordpress jquery-masonry


    【解决方案1】:

    使用document.querySelector('.print-slider'),您只能获得第一个具有print-slider 类的html 元素。这就是为什么只有第一个砌体被初始化的原因。

    以下是您的代码稍作调整,以捕获所有.print-slider 元素并分别初始化砌体。不同之处在于我通过类名获取元素,然后遍历它们。我使用body 作为imagesLoaded 的选择器,因为我没有完整的html 结构。我建议您将砖石包裹在一个 div 中,并使用该 div 来检查图像是否已加载。或者,更好的是,在 foreach 内部进行初始化之前分别检查每个砌体。

    var elements = document.getElementsByClassName('print-slider');
    var msnry;
    
    imagesLoaded( document.querySelector('body'), function() {
      // init Isotope after all images have loaded
      var n = elements.length;
      for(var i = 0; i < n; i++){
        msnry = new Masonry( elements[i], {
          itemSelector: '.print-slider-item',
          columnWidth: '.print-slider-sizer',
          gutter: '.gutter-sizer',
          percentPosition: true,
        });
      }
    });
    

    【讨论】:

    • 我很高兴它有帮助:)
    猜你喜欢
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多