简体   繁体   English

石工-物品彼此堆叠-Vanilla JS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM