Flex Div 的高度不是 100%

Posted

技术标签:

【中文标题】Flex Div 的高度不是 100%【英文标题】:Height of Flex Div Not 100% 【发布时间】:2019-08-08 03:33:14 【问题描述】:

我有身体全高,但最小高度为 100% 的包含 div 没有填充。我希望蓝色填充它的主体容器并弯曲对齐内部 div。

https://codepen.io/steventnorris/pen/oVdKqY

html 
  min-height: 100%;
  width: 100%;


body 
  min-height: 100%;
  width: 100%;
  background-color: green;


.main 
  display: flex;
  flex-direction: row;
  min-height: 100%;
  justify-content: space-between;
  background-color: blue;
<div class="main">
  <div>Text 1</div>
  <div>Text 2</div>
</div>

【问题讨论】:

【参考方案1】:

你可能想通过 Height Calculation By Browsers : Containing Blocks and Children。显然 heightmin-height 在 CSS 中不是一回事。


min-height 更改为height 用于您的bodyhtml - 请参见下面的演示:

html
  height: 100%; /* changed to height */
  width: 100%;

body
  height: 100%; /* changed to height */
  width: 100%;
  background-color: green;

.main
  display: flex;
  flex-direction: row;
  min-height: 100%;
  justify-content: space-between;
  background-color: blue;
<div class="main">
  <div>Text 1</div>
  <div>Text 2</div>
</div>

您还可以将height: 100vh 赋予main 元素以设置flexbox固有高度 - 参见下面的演示:

body
  margin: 0;
  height: 100vh; /* full viewport height */
  background-color: green;

.main
  display: flex;
  flex-direction: row;
  min-height: 100%;
  justify-content: space-between;
  background-color: blue;
<div class="main">
  <div>Text 1</div>
  <div>Text 2</div>
</div>

【讨论】:

对于我的特定用例,我保持最小高度不变,但将它们设为 vh 而不是百分位数,这正是我所需要的。【参考方案2】:

您可以为 .main 类指定 100vh 的最小高度。

.main
 display: flex;
 flex-direction: row;
 min-height: 100vh;
 justify-content: space-between;
 background-color: blue;
 

演示:https://codepen.io/anon/pen/pYKzzM

【讨论】:

以上是关于Flex Div 的高度不是 100%的主要内容,如果未能解决你的问题,请参考以下文章

额外的 div 导致图像高度无法正确缩放(显示:flex)

高度为 100% 的 Div 溢出到其父级下方的 flexbox 行 [重复]

next.js 中的 div 高度不是 100% [重复]

如何css宽度设置为包含内容,高度设置为100%?

如何让 flex-grow div 的孩子身高 100%

IE CSS bug:IMG原始高度影响父高度