获取 flexbox 列换行以使用全宽并最小化高度

Posted

技术标签:

【中文标题】获取 flexbox 列换行以使用全宽并最小化高度【英文标题】:Get flexbox column wrap to use full width and minimize height 【发布时间】:2014-10-16 07:15:05 【问题描述】:

我有一个固定宽度和可变高度的容器。我正在用未知数量的元素填充容器。 我希望元素按列排列,从上到下,然后从左到右。

我可以使用column,但是我不知道子元素的最大宽度,所以我不能设置column-widthcolumn-count

我认为display: flexflex-flow: column wrap 是要走的路,但如果我在容器上维护height: auto,它将生成为单个列,而无需包装元素以使用所有可用宽度。

我可以说服 flexbox 使用所有可用的宽度,从而最小化容器的高度吗? 您会提出不同的解决方案吗?


小提琴:http://jsfiddle.net/52our0eh/

来源:

html

<div>
    <span>These</span>
    <span>should</span>
    <span>arrange</span>
    <span>themselves</span>
    <span>into</span>
    <span>columns,</span>
    <span>using</span>
    <span>all</span>
    <span>available</span>
    <span>width</span>
    <span>and</span>
    <span>minimizing</span>
    <span>the</span>
    <span>container's</span>
    <span>height.</span>
</div>

CSS:

div 
    outline: 1px solid red;
    width: 100%;
    display: flex;
    flex-flow: column wrap;
    align-items: flex-start;
    /*height: 8em;*/

span 
    outline: 1px solid blue;

【问题讨论】:

2022 年仍在努力想出一个好的解决方案......! 【参考方案1】:

您查找的更像是列规则:DEMO

div /* do not set column numbers rule */
    width: 100%;
    -moz-column-width:4em;
    column-width:4em;
    -moz-column-gap:0;
    column-gap:0;
    -moz-column-rule:solid 1px;
    column-rule:solid 1px;
    text-align:center;

【讨论】:

我事先不知道子元素的宽度,可能超过4em。 @Thoronwen 设置您认为可以的任何宽度,或设置固定数量的列。或使用 javascript 或 jquery 即时设置/调整列宽。 this article 仍然适用于多列属性【参考方案2】:

我已经妥协并在容器元素上设置了height: 10em(这似乎可以接受)和overflow-y: auto(在溢出的情况下添加水平滚动条)。

不过,我仍然想知道是否有办法使用所有可用宽度并最小化高度。

【讨论】:

【参考方案3】:

最后,溢出的选项是隐藏、滚动或换行。这个版本怎么样?它需要任何溢出的项目并将它们放在第二行。第二行的项目仍会填满可用空间,但由于共享空间的项目数量较少,因此会更大。

http://jsfiddle.net/52our0eh/14/

div 
    outline: 1px solid red;
    display: flex;
    flex-flow: row wrap;

span 
    outline: 1px solid blue;
    flex:1;

【讨论】:

上面的示例没有按预期工作。高度不是最小的,也没有发生包装。

以上是关于获取 flexbox 列换行以使用全宽并最小化高度的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 图像高度(全宽)

如何将表格样式设置为容器的全宽并使单元格使用宽度的百分比?

css 恒定接触全宽:这将使CC嵌入形式在主页上更加全宽并堆叠在小部件上

Bootstrap xs 列换行

如何使用 pandas 为整个列换行?

Redshift ROW_ID 列换行?