【问题标题】:jQuery Masonry with JavaScript Generated HTML won't work使用 JavaScript 生成的 HTML 的 jQuery Masonry 不起作用
【发布时间】:2020-04-23 05:29:04
【问题描述】:

我正在使用来自cdnjs (docs) 和jQuery 3.5.0Masonry 4.2.2

我有 JavaScript,它使用数组和循环为 Masonry 生成 HTML grid-items

项目出现,但它们不会像预期的那样水平对齐,它们只会垂直堆叠。


https://jsfiddle.net/r8u0n6jk/


HTML

<div id="gallery" data-masonry='{ "itemSelector": ".grid-item", "columnWidth": 150 }'>
  <!-- Generated HTML -->
</div>

CSS

.grid-item {
  height: 100px;
  margin-bottom: 1em;
  padding: 1em;
  background: blue;
  color: white;
}

JavaScript

// Gallery Item Array
var gallery = ['item 1', 'item 2', 'item 3'];


// Generate Gallery List HTML
$(document).ready(Generate);

function Generate() {
  var list = document.getElementById("gallery");
  var html = "";

  for (var i = 0; i < gallery.length; i++) {
    html += '<div class=\"grid-item\">' + gallery[i] + '</div>';
  }

  list.innerHTML = html;
}


// Masonry
$(document).ready(function() {
  $('#gallery').masonry({
    itemSelector: '.grid-item',
    columnWidth: 150,
    isFitWidth: true,
  });
});

结果

垂直堆叠

想要的效果

应在屏幕尺寸变化时水平对齐并流畅地重新定位。

不使用 JavaScript 生成 HTML 的工作示例:
https://jsfiddle.net/3ys5k17p

【问题讨论】:

  • 你试过css中的display:inline属性吗?
  • @RaviNain 似乎不起作用,inline-block 也不起作用。砌体应自动应用效果。
  • 您需要将该属性添加到.grid-item div { display:inline}
  • @RaviNain 我在这里试过jsfiddle.net/5zxrh3Lj
  • 您对子 div 和父 div 使用相同的类名。

标签: javascript html jquery jquery-masonry masonry


【解决方案1】:

在css中添加如下语句:

.grid-item div {
   display: inline
 }

另外,增加列宽:

// Masonry
$(document).ready(function() {
  $('#gallery').masonry({
    itemSelector: '.grid-item',
    columnWidth: 500,
    isFitWidth: true,
  });
});

检查示例:https://jsfiddle.net/uszdtpb8/

编辑:也请参阅此示例:https://jsfiddle.net/hq0zLgfm/

【讨论】:

  • 它似乎无法正常工作。当窗口大小改变时,它应该表现在网格项目将流畅地重新排列和堆叠的地方,就像在这个例子中jsfiddle.net/3ys5k17p
  • 不知道是不是 CSS 问题,可能是 jQuery 加载问题。
  • 您尝试初始化 Masonry 两次:使用 html 和 jquery。从 html 中删除砌体初始化。它会起作用的。查看此示例:jsfiddle.net/hq0zLgfm
  • 我从html中删除砌体初始化的意思是:从div中删除data-masonry属性。
  • 我删除了数据砌体。谢谢,这解决了问题。我一定使用了 2 个不同示例中的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多