从我在 Flexbox 的 Chrome 和 Opera 实现中看到的情况来看,a flex-direction
of column 需要限制元素的高度,否则它将继续垂直扩展。它不必是一个固定值,它可以是一个百分比。
也就是说,您想要的.group
元素布局也可以通过使用 CSS Columns 模块来实现。元素的流动将类似于 flexbox 列方向的流动,但只要有足够的宽度,它就会创建列,而不管文档有多长。
http://jsfiddle.net/Yht4V/8/(你必须原谅缺少前缀)
html {
height: 100%;
}
body {
height: 100%;
display: flex;
flex-flow: column nowrap;
}
h1 {
padding: 1em;
}
#content {
padding: 10px;
background-color: #eee;
display: flex;
flex-grow: 1;
}
#content > .group {
margin: 10px;
padding: 10px;
border: 1px solid #cfcfcf;
background-color: #ddd;
flex: 1 1 auto;
}
#content > .group:first-child {
columns: 10em;
flex-grow: 2;
}
#content > .group .item {
margin: 10px;
padding: 10px;
background-color: #aaa;
break-inside: avoid;
}
#content > .group .item:first-child {
margin-top: 0;
}
把它当作一堆嵌套的弹性盒,这是我能得到的最接近的:
http://jsfiddle.net/Yht4V/9/(同样,没有前缀)
html {
height: 100%;
}
body {
height: 100%;
display: flex;
flex-flow: column nowrap;
}
h1 {
padding: 1em;
}
#content {
padding: 10px;
background-color: #eee;
display: flex;
flex: 1 1 auto;
height: 100%;
width: 100%;
}
#content > .group {
margin: 10px;
padding: 10px;
border: 1px solid #cfcfcf;
background-color: #ddd;
display: flex;
flex-flow: column wrap;
flex: 1 1 30%;
max-height: 100%;
}
#content > .group .item {
margin: 10px;
padding: 10px;
background-color: #aaa;
}