如何判断弹性框布局行是否占用浏览器窗口中的剩余垂直空间?
我有一个3行的FlexBox布局。前两行是固定高度的,但第3行是动态的,我希望它能增长到浏览器的全高。
我在row-3中有另一个弹性框,它创建了一组列。为了正确调整这些列中的元素,我需要它们了解浏览器的整个高度--例如背景颜色和底部的项目对齐方式。主要布局最终将类似于:
.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布局复制这个想法吗?
5条答案
按热度按时间epfja78i1#
您应该将
html, body, .wrapper
的height
设置为100%
(以便继承完整高度),然后仅将大于1
的flex
值设置为.row3
,而不是其他值。编辑,正如@Basj提到的,代码可以被缩短。我们现在也可以使用广泛实现的网格:下面是一个例子与网格为游客:
一个二个一个一个
ctehm74n2#
将 Package 器高度设置为100%
并将第3行设置为灵活增长
demo
bfrts1fy3#
让我向您展示另一种100%有效的方法,我还将为示例添加一些填充。
正如您所看到的,我们可以通过使用flex-grow & flex-direction属性的一些 Package 器来实现这一点。
1:当父级"flex-direction"为"row"时,其子级"flex-grow"水平工作。2:当父级"flex-direction"是"columns"时,其子级"flex-grow"垂直工作。
希望这能帮上忙
Daniel
8zzbczxx4#
公认的答案是非常好的,但我注意到
wrapper
和其他一些CSS规则是不需要的。下面是一个最小版本:nszi6y055#
只需增加高度:100 vh;,而不是100%。