这个问题在这里已有答案:
在默认行方向上使用弹性框时,容器高度会增加以包含所有弹性项,即使它是绝对定位的 .
#container {
position: absolute;
display: flex;
flex-wrap: wrap;
}
#container > div {
flex: 0 0 200px;
height: 200px;
}
见http://codepen.io/tamlyn/pen/dPjLoN/?editors=110
但是,如果将flex方向更改为column,则容器将折叠到单个flex项的宽度,即使这些项包装到下一列也是如此 .
#container {
position: absolute;
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
#container > div {
flex: 0 0 200px;
width: 200px;
}
见http://codepen.io/tamlyn/pen/rarbeN?editors=110
如何在 column
模式下使容器包含所有弹性项目?
3 回答
我是世界上最完美的东西 . 这是:http://codepen.io/anon/pen/vEPBKK
这里的技巧是创建一个
visibility: collapsed
容器 . 在flex中,visibility: collapsed
对象将自己从正常的flex流中移出,但为了布局而保留它们的尺寸 . 这会将弹性容器加宽到所需宽度,但不会影响弹性项目 . 但是有一些警告:这需要一点摆弄 . 正如您所看到的,魔法
<div>
是一个设定宽度,但它使用:nth-child
来确定它前面有多少个框 . 如果您的实际设计中断多于或少于3行,那么您肯定必须调整对象的宽度 .由于渲染错误,这在IE中不起作用 . 幸运的是,IE 's incorrect implementation does exactly what you wanted in the first place without any changes so all you have to do is give IE it'自己的样式表带有一些条件语句并且拍摄了
div.magic
一些好老display: none
.HTML
CSS
我认为这是你正在寻找的CSS:
“容器”将始终是容器的宽度,在本例中是页面,但现在这些框将在其中正确调整 .
如果我误解了你的问题,请告诉我 .
Update
我已经玩了几天你所要求的东西了,看起来似乎不可能做你所要求的......至少不是你要问的方向 .
容器希望成为可能的最大宽度 . 除非你强制容器是精确的宽度,否则它不会是整个宽度,但它也不会随着弯曲内容而弯曲 .
第一次尝试我不明白你的意思作为参考资料你可以看到这个教程https://css-tricks.com/snippets/css/a-guide-to-flexbox/