Masonry 似乎覆盖了 bootstrap 默认响应列宽

Masonry seems to override bootstrap default responsive column width

以下是一个基本的 Masonry 示例:
https://jsfiddle.net/Smartix/n5ks39LL/

如您所见,我有一个“.masonry-wrapper”行,其中包含 4 个“.col-sm-6”divs。
因此(根据标准 bootstrap 行为)在 xs 屏幕尺寸下,4 divs 应该扩展到 100% 宽度并且一个堆叠在另一个下面。基本上他们应该表现得像 4 col-xs-12 divs!!
但是,因为列的内容很少,所以 Masonry 自行决定它们的宽度应该等于它们的内容!

如果您查看 fiddle,您会发现只有 div 4 表现得像真正的 col-xs-12(因为它有一行足够长的文本)

HTML:

<div class="container">
<div class="row masonry-wrapper">
    <div class="col-sm-6 item bc1">
        <p>Div 1</p>
    </div>
    <div class="col-sm-6 item bc2">
        <p>Div 2</p>
        <p>Div 2</p>
        <p>Div 2</p>
        <p>Div 2</p>
    </div>
    <div class="col-sm-6 item bc3">
        <p>Div 3</p>
    </div>
    <div class="col-sm-6 item bc4">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sed hendrerit nisi. Donec vehicula magna eu tellus bibendum vehicula. Fusce tempus tellus purus, sed porta.
        </p>
    </div>

</div>
</div>

JS:

var $container = $('.masonry-wrapper');
$container.masonry({itemSelector: '.item'});

CSS:

.bc1 {background-color: #00bfb2;}
.bc2 {background-color: #de9800;}
.bc3 {background-color: #ff69da;}
.bc4 {background-color: #38ff59;}

这是错误还是配置错误?

您需要声明您的 .item 样式。

例如:

.item { width: 50%; } // 50% is equal to col-sm-6

若要适用于两种设备尺寸,请添加 mobile first 媒体查询行为。 https://jsfiddle.net/nx6mjkqr/

或者您可以将 js 代码更改为:

$container.masonry({itemSelector: '.col-sm-6'});

但这仅在 window 大小为 sm 时有效。