Flexbox垂直填充可用空间

Jim*_*m-Y 22 html css css3 flexbox

现在flexbox连续我都可以写

<div layout="row">
  <div>some content</div>
  <div flex></div> <!-- fills/grows available space -->
  <div>another content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望实现相同但垂直,就像在这张照片上 在此输入图像描述 目前的问题是需要增长的div没有任何高度,因此两个内容相互低于一致.我希望我的第二个内容位于具有固定高度的父容器的底部!

我知道我可以通过将第二个内容定位为绝对来解决这个问题bottom: 0;但是我可以实现flexbox吗?

kuk*_*kuz 41

所以你可以尝试这个:

  1. flex-direction: column 对于flex容器.

  2. flex: 1 对于需要填充剩余空间的元素.

请参阅下面的示例,其中flexbox跨越视口高度:

body {
  margin: 0;
}
*{
  box-sizing: border-box;
}
.row {
  display: flex;
  flex-direction: column;
  height: 100vh;
}
.flex {
  flex: 1;
}
.row, .row > * {
  border: 1px solid;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row">
  <div>some content</div>
  <div class="flex">This fills the available space</div>
  <!-- fills/grows available space -->
  <div>another content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

干杯!


Nen*_*car 16

你只需要flex-direction: column在父和flex: 1中间div上使用.

body,
html {
  padding: 0;
  margin: 0;
}
.row {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
.row > div:not(.flex) {
  background: #676EE0;
}
.flex {
  flex: 1;
  background: #67E079;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row">
  <div>some content</div>
  <div class="flex"></div>
  <!-- fills/grows available space -->
  <div>another content</div>
</div>
Run Code Online (Sandbox Code Playgroud)