首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex -增长不扩展flex项目

flex -增长不扩展flex项目
EN

Stack Overflow用户
提问于 2018-08-25 14:32:59
回答 1查看 7.2K关注 0票数 6

首先,我使用flexbox创建一个布局:

代码语言:javascript
复制
<html>
  <body>
    <div id="header"></div>
    <div id="main"></div>
  </body>
</html>

header div有一个固定的height: 60px,主div接受屏幕的剩余高度:

代码语言:javascript
复制
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的剩余高度。

我加上以下代码:

代码语言:javascript
复制
<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是不可见的。如果需要高度值,我为什么还要使用挠性盒.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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只适用于子元素,而不适用于其他后代。

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
<header></header>
<main>
  <div id="box_1"></div>
  <div id="box_2"></div>
  <div id="box_3"></div>
</main>

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52018254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档