【发布时间】:2015-06-14 16:16:55
【问题描述】:
正如您从下面的代码片段 (View as Fiddle) 中看到的那样,绝对定位的柱状 flexbox 不会扩展以适应其子级。
例如,在 Chrome 中,它只会与最宽的子元素一样宽,与最短的列一样高。
任何人都可以在不使用任何附加标记的情况下提出解决方案吗?
编辑:列表中的项目数量是动态的,每个项目中的文本也是如此。在一定数量的项目之后,我需要换一个新列。
*{box-sizing:border-box;}
ul{
background:#090;
display:flex;
flex-flow:column wrap;
left:0;
list-style:none;
max-height:202px;
padding:5px;
position:absolute;
top:0;
}
li{
background:rgba(255,0,0,.75);
color:#fff;
flex:1 0 30px;
font-family:arial;
line-height:30px;
max-height:30px;
margin:1px;
padding:0 2px;
min-width:100px;
}
<ul>
<li>Line 0</li>
<li>Line 1</li>
<li>Line 2</li>
<li>Line 3</li>
<li>Line 4</li>
<li>Line 5</li>
<li>Line 6</li>
<li>Line 7</li>
<li>Line 8 is a little bit longer</li>
</ul>
【问题讨论】:
-
您需要将数据分成两列吗?
-
列表中的项目数将是动态的,我试图让它在设定的数字后进入一个新列,因此可能有任意数量的列。跨度>
-
那么你可能不得不使用百分比。
-
你能详细说明一下吗,lharby?
-
抱歉,我不太了解 flex 属性。我尝试将其设置为 clearfix 的默认属性,并带有 display:block 的后备功能,因此较旧的浏览器会解释它。我在想你可以浮动 li,然后给它们 50%、33%、25% 等宽度,但我认为这违背了使用 flex 属性的目的。
标签: css css-position flexbox