【发布时间】:2020-04-23 05:29:04
【问题描述】:
我正在使用来自cdnjs (docs) 和jQuery 3.5.0 的Masonry 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