当我使用column-count
属性时,我遇到了Chrome问题。我有一个div在里面我会有一些项目所以我设置column-count: 3;
当我有3个或更多项目时效果很好,但是当我只有两个项目时,它们不会显示在同一行但是在同一列中。这只发生在Chrome上。
代码示例:
.userinfo-content .grid-view.author-profile-tabs {
.column-count(3);
.column-gap(30);
.article {
position:relative;
display: inline-block;
margin-bottom: 40px;
width: 100%;
line-height: 1.3;
}
}
答案 0 :(得分:14)
根据您的标记的外观,break-inside: avoid-column;
应该使用display: block
而不是display: inline-block
来解决这个问题(您可以删除width: 100%
)
.outer {
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 30px;
-moz-column-gap: 30px;
column-gap: 30px;
}
.inner {
position: relative;
display: block;
margin-bottom: 40px;
line-height: 1.3;
break-inside: avoid-column;
}
.inner:nth-child(even) {
background: lightgray;
}
<div class="outer">
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
</div>
根据评论更新
在这种情况下,为了打败底部边距问题,您需要一个包装器,这样您就可以将outer
设为负margin-top
,然后使用{{1在项目上而不是margin-top
。
margin-bottom
.outer {
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 30px;
-moz-column-gap: 30px;
column-gap: 30px;
margin-top: -30px;
}
.inner {
position: relative;
display: block;
margin-top: 30px;
line-height: 1.3;
break-inside: avoid-column;
}
.inner:nth-child(even) {
background: lightgray;
}
如果它是您想要的3列布局,<div class="wrapper">
<div class="outer">
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
</div>
</div>
做得更好并且拥有更好的浏览器支持
flexbox
.outer {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
padding-left: 20px;
}
.inner {
width: calc(33.33% - 20px);
margin: 0 20px 20px 0;
line-height: 1.3;
}
.inner:nth-child(even) {
background: lightgray;
}