Chrome columns bug when number of columns is less then column-count

匿名 (未验证) 提交于 2019-12-03 02:29:01

问题:

I'm having an issue with Chrome when I use the column-count property. I have a div where inside it I will have some items so I set column-count: 3; When I have 3 items or more it works well, but when I have only two they are not shown in the same row but in the same column. This happens only on Chrome.

code example:

.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;   } }

回答1:

Based on how your markup looks like, the break-inside: avoid-column; should fix that, together with usingdisplay: block instead of display: inline-block (and you can drop 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>

Updated based on a comment

In this case, to defeat that bottom margin issue, you need a wrapper so you can give the outer a negative margin-top, and then you use margin-top on the items instead of 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; }
<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>

If it's a 3 columns layout you want, flexbox does that better and have better browser support

.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; }
<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>


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!