[英]Masonry — items stack on top of each other — Vanilla JS
First time I'm using Masonry.js , I try to display my items in a simple grid but all items are just in position: absolute
so they stack on each other. 第一次使用Masonry.js时 ,我尝试将我的物品显示在一个简单的网格中,但所有物品都
position: absolute
因此它们可以相互堆叠。
I try to add a margin: 0 auto
on the gutter selector as advice on this post but it won't help. 我尝试添加一个
margin: 0 auto
在装订线选择器上为margin: 0 auto
作为此文章的建议,但无济于事。
Here is a fiddle, am I doing something wrong? 这是一个小提琴,我做错什么了吗?
let grid = document.querySelector('.main__content'), msnry = new Masonry(grid, { itemSelector: '.item', columnWidth: '.item--sizer', percentPosition: true, gutter: '.item--gutter', });
.item { background: #eee; padding: 1rem; border: 1px solid darken(#eee, 5%); width: calc(50% - 2rem); &--sizer { width: calc(50% - 2rem); } &--gutter { width: 2rem; } }
<div class="main__content"> <div class="item">This is an item 1</div> <div class="item">This is an item 2</div> <div class="item">This is an item 3</div> <div class="item">This is an item 4</div> <div class="item">This is an item 5</div> <div class="item">This is an item 6</div> <div class="item">This is an item 7</div> <div class="item">This is an item 8</div> <div class="item">This is an item 9</div> <div class="item">This is an item 10</div> <div class="item">This is an item 11</div> <div class="item">This is an item 12</div> </div> <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.js"></script>
Thank you in advance. 先感谢您。
AW AW
EDIT 编辑
Regarding Sabuja's answer, I fix the problem as you can see in the following jsFiddle . 关于Sabuja的答案,正如下面的jsFiddle所示 ,我已解决了该问题。
let grid = document.querySelector('.main__content'), msnry = new Masonry(grid, { itemSelector: '.item', columnWidth: '.item--sizer', percentPosition: true });
*, *:before, *:after {box-sizing: border-box !important;} .item { background: #eee; padding: 1rem; border: 1px solid #ddd; width: 50%; &--sizer { width: 50%; } &--is-invisible { visibility: hidden; } }
<div class="main__content"> <div class="item">This is an item 1</div> <div class="item">This is an item 2</div> <div class="item">This is an item 3 with fake news : Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut hic et amet, autem provident ab magnam cumque nihil dolorum incidunt fugiat placeat iusto libero sapiente accusantium mollitia velit, harum minima.</div> <div class="item">This is an item 4</div> <div class="item">This is an item 5</div> <div class="item">This is an item 6</div> <div class="item">This is an item 7</div> <div class="item">This is an item 3 with fake news : Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut hic et amet, autem provident ab magnam cumque nihil dolorum incidunt fugiat placeat iusto libero sapiente accusantium mollitia velit, harum minima.</div> <div class="item">This is an item 9</div> <div class="item">This is an item 10</div> <div class="item">This is an item 11</div> <div class="item">This is an item 12</div> <div class="item item--is-invisible item--sizer"></div> <div class="item item--is-invisible item--gutter"></div> </div> <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.js"></script>
The script can't find required classes in DOM ("item--sizer" and 'item--gutter'). 该脚本无法在DOM中找到所需的类(“ item--sizer”和“ item--gutter”)。 JS can't take it from CSS file.
JS无法从CSS文件中获取它。
columnWidth can't find "item--sizer" class in DOM. columnWidth在DOM中找不到“ item--sizer”类。 Add this class to the element you need.
将此类添加到所需的元素。 Remove line gutter: '.item--gutter' or add this element to DOM.
删除行装订线:“。item--gutter”或将此元素添加到DOM。
Add Css class in style 在样式中添加CSS类
.list-block {
width: 100%;
float: left;
height: 55px;
}
Html code HTML代码
<div class="main__content">
<div class="item-block">
<div class="item">This is an item 1</div>
</div>
<div class="item-block">
<div class="item">This is an item 2</div>
</div>
<div class="item-block">
<div class="item">This is an item 3</div>
</div>
<div class="item-block">
<div class="item">This is an item 4</div>
</div>
<div class="item-block">
<div class="item">This is an item 5</div>
</div>
<div class="item-block">
<div class="item">This is an item 6</div>
</div>
<div class="item-block">
<div class="item">This is an item 7</div>
</div>
<div class="item-block">
<div class="item">This is an item 8</div>
</div>
<div class="item-block">
<div class="item">This is an item 9</div>
</div>
<div class="item-block">
<div class="item">This is an item 10</div>
</div>
<div class="item-block">
<div class="item">This is an item 11</div>
</div>
<div class="item-block">
<div class="item">This is an item 12</div>
</div>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.