如何告诉 flexbox 布局行消耗浏览器窗口中剩余的垂直空间?
我有一个 3 行的 flexbox 布局。前两行是固定高度,但第三行是动态的,我希望它增长到浏览器的全高。
我在第 3 行有另一个 flexbox,它创建了一组列。为了正确调整这些列中的元素,我需要它们了解浏览器的完整高度——例如背景颜色和底部的项目对齐。主要布局最终将类似于:
.vwrapper {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: stretch;
align-content: stretch;
//height: 1000px;
}
.vwrapper #row1 {
background-color: red;
}
.vwrapper #row2 {
background-color: blue;
}
.vwrapper #row3 {
background-color: green;
flex 1 1 auto;
display: flex;
}
.vwrapper #row3 #col1 {
background-color: yellow;
flex 0 0 240px;
}
.vwrapper #row3 #col2 {
background-color: orange;
flex 1 1;
}
.vwrapper #row3 #col3 {
background-color: purple;
flex 0 0 240px;
}
<body>
<div class="vwrapper">
<div id="row1">
this is the header
</div>
<div id="row2">
this is the second line
</div>
<div id="row3">
<div id="col1">
col1
</div>
<div id="col2">
col2
</div>
<div id="col3">
col3
</div>
</div>
</div>
</body>
我尝试添加一个 height
属性,当我将其设置为硬数字时该属性有效,但当我将其设置为 100%
时无效。我了解 height: 100%
不起作用,因为内容没有填满浏览器窗口,但我可以使用 flexbox 布局复制这个想法吗?
原文由 Nicholas Pappas 发布,翻译遵循 CC BY-SA 4.0 许可协议
You should set
height
ofhtml, body, .wrapper
to100%
(in order to inherit full height) and then just set aflex
value greater than1
到.row3
而不是其他的。演示
编辑,正如@Basj 提到的,代码可以缩短。我们现在也可以使用广泛实施的网格:下面是一个为访问者提供网格的示例: