单击更改砌体列

Changing Masonry columns on click

我正在尝试使用 jQuery 中的脚本更改 Masonry 的列数。此脚本减少 Masonry 容器的最大宽度以强制仅显示一列。该脚本几乎可以正常工作,因为我需要双击才能完成更改。 ¿是否可以一键制作?

这是我的脚本:

$('.grid').masonry({
  itemSelector: '.grid-item',
  columnWidth: '.grid-sizer',
  percentPosition: true,
  gutter: 24,
});

$(document).ready(function() {
  $('.button-one').on('click', function() {
    $('.grid').masonry({
      itemSelector: '.grid-item',
      columnWidth: '.grid-sizer',
      percentPosition: true,
      gutter: 24,
    });

    $('.grid').css({'max-width': '600px'});
  });
});

我有一个包含所有文件的 Codepen 演示:

Demo

一种可行的方法:

$('.button-one').on('click', function() {
  $('.grid').css({'max-width': '600px'})
            .masonry('layout');
});

Demo。看,您不需要重新初始化整个插件:只需命令它根据网格容器的新尺寸使用现有规则重新布局现有项目。

按照目前的方式,首先再次调用插件(使用容器的 existing 样式进行所有计算),然后才更改 max-width 的网格。第二次点击正常,因为尺寸已经更改。

在网格砌筑之前改变宽度)

$('.grid').css({'max-width': '600px'});
$('.grid').masonry({
      itemSelector: '.grid-item',
      columnWidth: '.grid-sizer',
      percentPosition: true,
      gutter: 24,
});