CSS如何使div填充所有垂直空间

its*_*sme 1 html javascript css html5 css3

我做了这个例子:https://jsfiddle.net/jpdjkdr0/

我想要实现的是#wrapper在任何情况下使div总是适合高度(固定为500px).

因此,当切换新的div(单击按钮)时,所有div应调整自身以适应完整的包装器高度.

如果可能的话,我想在纯css中实现这个目标,但我没有想法atm.

有什么建议?也许有些flexbox?!

Sam*_*lis 6

您可以添加display: flex; flex-direction: column;#wrapper并设置孩子的div来flex: 1.

这将允许他们增长以填补可用空间:https://jsfiddle.net/jpdjkdr0/1/

.hide {
  display:none;
}
#wrapper {
  height: 500px;
  width:500px;
  border: 10px solid violet;
  display: flex;
  flex-direction: column;
}
#wrapper div {
  flex: 1;
}
#div-1 {
  background: brown;
  color: white;
}
#div-2 {
  background: green;
  color: white;
}
#div-3 {
  background: red;
  color: white;
}
#div-4 {
  background: blue;
  color: white;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="$('#div-1').toggle()">
show div
</button>
<div id="wrapper">
<div id="div-1" class="hide">
1
</div>
<div id="div-2">
2
</div>
<div id="div-3">
3
</div>
<div id="div-4">
4
</div>
</div>
Run Code Online (Sandbox Code Playgroud)