html - 当 div 具有相同高度时,CSS 列不起作用

标签 html css masonry

我正在尝试制作类似于 masonry 的柱子,而无需加载另一个 JS 插件。

我的 Html 是这样的

<div class="masonry">
    <div class="item">
        <p class="item__par">texttexttexttext</p>     
        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
    <div class="item">
        <p class="item__par">texttexttexttext</p>    
        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
    <div class="item">
        <p class="item__par">texttexttexttext</p>    
        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
    <div class="item">
        <p class="item__par">texttexttexttext</p>    
        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
        <div class="item">
        <p class="item__par">texttexttexttext</p>    
        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
        <div class="item">
        <p class="item__par">texttexttexttext</p> <a href="" class="">texttexttexttexttexttext</a>

        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
        <div class="item">
        <p class="item__par">texttexttexttext</p>    
        <div class="item--inner">
            <p>itemitemitemitemitemitemitemitemitem</p>
        </div>
    </div>
</div>

CSS:

.masonry {
    -moz-column-count:3;
    -webkit-column-count:3;
    column-count: 3;
}
.item {
    width: 273px;
    border:1px solid black;
    background: lightgray;
    display:inline-block;
    vertical-align:top;
    margin-right:50px;
    margin-bottom:50px;
}

不知道原因,但 columns-count 并没有像看起来那样工作。第二行的最后一个元素是下拉而不是 float 到第二行的右侧。

更新:当 block 具有相同的高度时会发生这种情况。当我更改内容时,列开始水平显示

请查看 fiddle 以获得更清晰的信息并分享您的经验。谢谢

http://jsfiddle.net/frontDev111/7Lcrt8kq/

最佳答案

这些列是垂直堆叠的,而不是水平堆叠的。就这样:

item1  item4  item7

item2  item5

item3  item6

您只需删除列数属性即可实现所需的行为:http://jsfiddle.net/zephod/n42sqd4v/1/

编辑:如果您想要完整的 masonry 行为,我的建议是使用 jQuery Masonry 插件。它不仅涵盖了您可能会错过的许多边缘案例,而且还在广泛的 Web 浏览器中进行了全面测试,您需要一个非常充分的理由来重新发明轮子。

关于html - 当 div 具有相同高度时,CSS 列不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27081021/

相关文章:

jquery - 将值注入(inject) CSS 类

javascript - 允许 dragstart-Event 而不会失去其他控件的焦点

html - 我有一个我似乎无法弄清楚的 HTML/CSS 问题(初级水平)

javascript - Jquery iCheck 在列表输入中不起作用

html - 用 jQuery 砌筑不均匀网格

javascript - 打开日期选择器日历

javascript - 播放视频并按住鼠标 - jQuery

html - 如何使幻灯片标题响应并在页面最小化时消失?

css - 更改网格样式的顺序( masonry )

jquery - 猫头鹰旋转木马与 Masonry 冲突。绝对定位和溢出的东西