html - Flexbox 填充剩余高度 100%

标签 html css flexbox

为什么“方框 2”没有填满整个(可用)空间? height:100% 被忽略了...

HTML:

<div id="container">
    <div id="box1">Box 1</div>
    <div id="box2">Box 2</div>
    <div id="box3">Box 3</div>
</div>

CSS:

body {
  margin: 0 auto;
}

#container {
  width: 100%;
  height: 100%;
  background: #cccccc;
  display: -webkit-flex;
  display: flex;
  flex-direction: column
}

#box1 {
  background: red;
  height: 50px
}

#box2 {
  background: yellow;
  -webkit-flex: 1;
  flex: 1
}

#box3 {
  background: green;
  height: 50px
}

http://jsfiddle.net/618axkjy/2/

谢谢!

最佳答案

这是因为 #container 父元素的高度不是 100%。目前,body 元素的高度由 #container 元素的高度决定(因为它是唯一的子元素)。由于您使用百分比定义 #container 元素的高度,因此高度将保持不变,因为父元素的高度也相同。

您需要将 html/body 元素的 height 设置为 100%:

Updated Example

html, body, #container {
    height: 100%;
}

..或者您可以在 viewport-percentage units, vh 中定义 #container 元素的高度:

Updated Example

#container {
    height: 100vh;    /* 100% of the viewport height */
}

关于html - Flexbox 填充剩余高度 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29562596/

相关文章:

javascript - 动态定位的开/关面板

html - 为什么我的标题强制水平滚动条?

css - 使用 CSS 动画化表单标签

css - 与损坏的 Bootstrap 对齐

css - 在没有命令行知识的情况下在 PC 上安装 Sass

javascript - CSS Flex Center 和 Masonry JS 冲突

jquery - 奇怪的行为 - jQuery .html() 导致 IE8 中 <pre> 元素中的换行符丢失

javascript - 从 list.js 获取 {id :3, name :"John"} 的值

html - Flexbox 父属性不起作用(对齐内​​容、对齐内容、对齐元素)

html - Windows 8 Flexboxes - 启用溢出的嵌套 Flexboxes