问题的根源似乎是在使用浏览器时会根据元素的数量是偶数还是奇数而区别column-count
对待。margin
padding
这意味着像这样的解决方案display: inline-block; width: 100%
;或玩弄margin
或padding
创建不一致的结果。
解决方案
我发现让这个在浏览器中始终如一地工作的唯一方法是添加 aparent-element
和 a spacer
。然后使用break-inside: avoid
将两个元素保持在一起。
HTML
<div class="mainContentSection">
<div class="parent-element"> <!-- added this element -->
<p>Blah blah blah blah</p>
<div class="spacer"></div> <!-- added this element -->
</div>
<div class="parent-element">
<p>Blah2 blah2 blah2 blah2</p>
<div class="spacer"></div>
</div>
<!-- addition items... -->
</div>
CSS
.mainContentSection{
column-count:2
}
.parent-element{
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid;
}
.spacer{
height: 10px;
}
您可以根据需要的空间在段落上方添加padding
或添加mainContentSection
另一个。spacer
问题
不一致的对齐似乎是由偶数或奇数个元素驱动margin
并以不同方式处理的。padding
我发现这是正确的-top
,-bottom
但为了简单起见,我只margin-bottom
在示例中使用。
偶数元素(工作正常)
当元素数量为偶数时margin-bottom
。
奇数个元素(不起作用)
当有奇数个元素margin-bottom
移动到第二列时,会产生错位。
其他解决方案
这意味着只是在浏览器和设备上使用margin
或padding
导致不一致的结果。
使用display: inline-block; width:100%
几乎可以工作,但我发现对于一些浏览器/设备变体,如果只有两个元素,它将两个元素保留在一列中,因为没有中断。这可以通过添加此处建议的中断来解决,但正如用户提到的,如果元素高度不同,它似乎会产生不一致的结果。