javascript - 如何修复 masonry 插件产生的奇怪布局

标签 javascript jquery html css masonry

我正在使用 masonry 脚本在我的网站上创建一个图像面板。我为图像设置了三种不同的尺寸,分别为 33%、50% 和 66%,所以一切都应该很好地组合在一起,但我得到了这个:

enter image description here

第一行没问题,但第二行应该是“四位名人的婚礼”照片,然后最好是蓝色的“alan titchmarsh”照片,而不是“今天早上”的照片。我已经在使用 imagesLoaded 扩展,因此它会在加载图像后对其进行排列。想知道是否有人知道如何解决这个问题?

我的 html:

<div class="masonry">
      <div class="masonry-sizer"></div>
      <div class="masonry-item masonry-item--width3"><img src="images/press/masonry/1.png" /></div>
      <div class="masonry-item"><img src="images/press/masonry/2.png" /></div>
      <div class="masonry-item masonry-item--width2"><img src="images/press/masonry/3.png" /></div>
      <div class="masonry-item masonry-item--width2"><img src="images/press/masonry/4.png" /></div>
      <div class="masonry-item masonry-item--width3"><img src="images/press/masonry/5.png" /></div>
      <div class="masonry-item"><img src="images/press/masonry/6.png" /></div>
      <div class="masonry-item"><img src="images/press/masonry/7.png" /></div>
      <div class="masonry-item"><img src="images/press/masonry/8.png" /></div>
</div>

<script src="js/imagesloaded.pkgd.min.js"></script>
<script src="js/masonry.pkgd.min.js"></script>
<script>
  var $grid = $('.masonry').masonry({
    itemSelector: '.masonry-item',
    columnWidth: '.masonry-sizer',
    percentPosition: true,
    horizontalOrder: true,
    initLayout: false
  });

  $grid.imagesLoaded().progress( function() {
    $grid.masonry('layout');
  });
</script>

我的 SCSS:

.masonry:after {
content: '';
display:block;
clear: both;
}

.masonry-item, .masonry-sizer {
width: 33.333%;
float: left;
img{
    display: block;
    width: 100%;
    }
}

.masonry-item--width2 { width: 50%; }
.masonry-item--width3 { width: 66.666%; }

最佳答案

搞定了!对于可能遇到相同问题的任何人:

masonry-sizer(默认情况下为 grid-sizer)类必须是一个适合所有其他 masonry 元素的数字,没有余数。因此,此处使用 33.33% 不适用于 50% 的 masonry 元素大小。我将 masonry-sizer 更改为 25%,然后所有 masonry-items 都是 25%、50% 或 75% 等。

关于javascript - 如何修复 masonry 插件产生的奇怪布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51967960/

相关文章:

javascript - 保存到本地存储

javascript - 将 PHP 中的正则表达式转换为 javascript

javascript - 切换禁用的单选按钮并更改选中的值

javascript - 动态加载的内容点击事件未触发

php - 如何在 laravel 4.2 中使用带有自定义预过滤器的 AJAX 上传 CSV 文件

javascript - jQuery data() 返回未定义,attr() 返回整数

javascript - react : Looping through an array within a state

html - 如何使用容器的文本大小制作子div?

html - 使用 div 创建的分组表头

javascript - 按下后退按钮时如何保留可滚动区域的滚动位置?