首先,我使用flexbox创建一个布局:
<html>
<body>
<div id="header"></div>
<div id="main"></div>
</body>
</html>header div有一个固定的height: 60px,主div接受屏幕的剩余高度:
html, body{
100%;
}
body{
display: flex;
flex-direction: column;
}
#header{
height: 60px;
flex-grow: 0;
}
#main{
flex-grow: 1;
}我得到了我想要的

然后,我想在#main div中显示三个框: box_1、box_2和box_3。box_1和box_3具有相同的高度值,box_2扩展自己以获取#main的剩余高度。

我加上以下代码:
<html>
<body>
<div id="header"></div>
<div id="main">
<div id="box_1"></div>
<div id="box_2"></div>
<div id="box_3"></div>
</div>
</body>
</html>
#main{
flex-grow: 1;
flex-direction: column;
}
#box_1, #box_3{
height: 60px;
flex-grow: 0;
background-color: red;
}
#box_2{
flex-grow: 1;
background-color: blue;
}除非我将高度值设置为#box_2 div,否则#main是不可见的。如果需要高度值,我为什么还要使用挠性盒.
发布于 2018-08-25 19:27:18
代码中的主要问题是没有在display: flex容器上指定#main。
因此,元素不是flex容器,flex-direction: column被忽略,子元素也不是flex项。
请记住,flex properties work only between parent and child elements。因此,您在body元素上的body只适用于子元素,而不适用于其他后代。
body {
display: flex;
flex-direction: column;
height: 100vh;
margin: 0;
}
header {
flex: 0 0 60px; /* flex-grow, flex-shrink, flex-basis */
background-color: lightgray;
}
main {
flex-grow: 1;
background-color: aqua;
display: flex; /* key addition */
flex-direction: column;
}
#box_1, #box_3 {
flex: 0 0 60px;
background-color: red;
}
#box_2 {
flex-grow: 1;
background-color: blue;
}<header></header>
<main>
<div id="box_1"></div>
<div id="box_2"></div>
<div id="box_3"></div>
</main>
https://stackoverflow.com/questions/52018254
复制相似问题