使 div 展开以占用所有可用空间 [英] Make div expand to take all the available space
问题描述
我想要一个类似于桌面的全页宽度布局.顶部的一些菜单(未知高度,取决于内容),和下面的 div 占用视口中的所有可用空间.
div {填充:0px}html,身体 {高度:100%;填充:0px;边距:0px;}.外{背景:橄榄色;高度:100%;}.菜单 {背景:橙色;}.should_fill_available_space {背景:棕色;}
<div class="菜单">Lorem Ipsum Lorem Ipsum Lorem Ipsum<div id="this" class="should_fill_available_space">棕色应该一直向下
我有一个用于这种情况的代码笔:https://codepen.io/marek-zganiacz/pen/NvEaxr
我希望 should_fill_available_space
一直向下,就像 menu
将具有 height:10%
和 should_fill_available_space
有高度:90%".
最简单的方法是使用 flexbox.
- 您将
display: flex
分配给父容器.在您的情况下,这是外部.outer
. - 一个 flexbox 在一个方向上工作.因此,您可以将它们视为列(垂直)或行(水平).默认设置是将子元素展开成一行.但是我们想创建一个列.因此,我们必须将
.outer
上的flex-direction
更改为flex-direction: column
. - 现在我们需要指定我们希望 flexbox 如何划分
.outer
中的可用空间量.正常行为是 flexbox 为其子项提供正常的宽度/高度.但是通过将flex:1
分配给.should_fill_available_space
,该元素将获得所有额外的可用空间.flexbox 基本上说的是,我们希望计算机使用所有 1/1 = 100%(使用的 flex 值除以所有子项的总 flex 值)可用空间来申请.should_fill_available_space
,而保持.menu
宽度的最小空间.从技术上讲,flex:
是其他一些属性的简写,但这对于这个问题并不重要.
这是您的 JS-Fiddle:https://jsfiddle.net/cryh53L7/
html
<div class="菜单">逻辑推理逻辑推理逻辑推理<div id="this" class="should_fill_available_space">棕色应该一直向下