【发布时间】:2020-03-23 03:03:43
【问题描述】:
我有一些简单的 HTML 和 CSS 将列表分成 4 列。与将每个列表项放入有足够空间的列中的正常行为不同,我想强制它将每个列表项放入自己的列中。
所以在我的示例中,<li>Column 1</li> 将始终仅位于第一列。 <li>Column 2<br>Column 2<br>Column 2<br>Column 2</li> 将始终仅位于第二列。与第 3 列和第 4 列相同。
有没有办法在使用columns 属性时完成此操作?
ul.data-points {
columns: 4;
column-gap: 20px;
}
<ul class="data-points">
<li>Column 1</li>
<li>Column 2<br>Column 2<br>Column 2<br>Column 2</li>
<li>Column 3</li>
<li>Column 4</li>
</ul>
【问题讨论】:
-
为什么不直接使用 flexbox 呢?
-
@ZohirSalak 因为为了让 flexbox 中等宽列之间的间距相等,您需要在单元格上设置 x 边距,然后在 flex 容器上设置负边距,以便移除最左边和最右边的边距,同时保持列的宽度相同。对我来说,这感觉有点骇人听闻,所以如果可以将列表列设置为每列有 1 个列表项,那么在它们之间设置等宽列和等宽间距将是一种更简洁的方法。
-
如果你想在两者之间留出空间,你可以在孩子身上使用边距,就像你使用
column-gap: 20px;一样,它只会更好地给出完全相同的布局,这里是demo -
@ZohirSalak 感谢这个例子!我显然对 flexbox 了解不够,因为它很好用,而且很简单......
标签: html css css-multicolumn-layout