首页 > 建站教程 > CSS3+HTML5 >  css3 column多列瀑布流布局顶部不对齐,列断裂正文

css3 column多列瀑布流布局顶部不对齐,列断裂

css3的column多列布局让瀑布流布局从复杂变的非常简单,以前甚至要借助js,现在几行css即可完美解决。详见:利用css3 column属性制作瀑布流效果 以及 column css3 详解

我爱模板网做最近就利用column属性,做了一个瀑布流,但是,发现瀑布流顶部不对齐,如下:



css代码:
.waterfall{
    padding: .2rem .28rem;
    column-count: 2;   //显示两列
    column-gap: normal;  //列间距
}
.waterfall .item{
    width: 3.2rem;
    overflow:hidden;
    box-sizing: border-box;
    break-inside: avoid;   //列里面的项不折断
    margin-bottom:.19rem;
}
.waterfall .item-content{
    background:rgba(255,255,255,1);
    border-radius:.08rem;
    box-shadow:0px .04rem .16rem 0 rgba(0, 0, 0, 0.04);
}
.waterfall .item-pic{
    position:relative;
    width:3.20rem;
    overflow: hidden;
}
html代码:
<div class="waterfall">
    <div class="item" tapmode @click="openDetailWin(item.topicId)" v-for="(item,index) in list" @key="index">
        <div class="item-content">
            <div class="item-pic">
                <img v-if="item.imageUrl1" :src="imgSrc+item.imageUrl1">
                <img v-else src="../../image/error_img.png">
            </div>
            <div class="item-padded">
                <div class="item-title">{{item.topicTitle}}</div>
                <div class="item-desc">{{item.topicContent}}</div>
                <div class="item-small tf-flex tf-flex-between tf-margin-t-10">
                    <span>{{item.commentCount}}评论&nbsp;&nbsp;{{item.likeCount}}赞</span>
                    <span>{{func.time2desc(item.addTime)}}</span>
                </div>
            </div>
        </div>
    </div>
</div>
    找了半天,发现是 item 的 margin-bottom 导致的:第一列的最后一个item的margin-bottom跑到第二列第一个item上面了,改成padding-bottom即可,因为padding属于内容,只要不折断,就不会跑到另一列

    最终效果图:



       此外,我爱模板网发现,除了margin会断裂,定位出去的也会断裂,所以,如果想让内容不断裂,一定要让它包含在item里面。