当它们的大小可变时,如何制作3个div,总高度为100%?

时间:2015-09-24 19:05:51

标签: html css html5 css3

所以我有一个div,它是完整的浏览器高度(100%),我们称之为' x'。然后我有3个div包含在其中,它们可以被称为' a'' b'' c'。 div的高度' a'是一个段落的高度。 div的高度' b'根据浏览器完全改变。 div的高度' c'应填写剩余的浏览器高度,使c = 100-a-b。如果其中任何一项不清楚,请随时提出问题。谢谢你的帮助:))

1 个答案:

答案 0 :(得分:3)

这是柔性盒的完美用例。您需要定义高度为100%的容器,您可以将其置于绝对位置。并为容器提供flex容器布局。很难解释,但你的解决方案是:

* {box-sizing: border-box;}
.flex-container {
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-flex-wrap: nowrap;
  -ms-flex-wrap: nowrap;
  flex-wrap: nowrap;
  -webkit-justify-content: flex-start;
  -ms-flex-pack: start;
  justify-content: flex-start;
  -webkit-align-content: stretch;
  -ms-flex-line-pack: stretch;
  align-content: stretch;
  -webkit-align-items: flex-start;
  -ms-flex-align: start;
  align-items: flex-start;
}

.flex-item:nth-child(1) {
  -webkit-order: 0;
  -ms-flex-order: 0;
  order: 0;
  -webkit-flex: 0 1 auto;
  -ms-flex: 0 1 auto;
  flex: 0 1 auto;
  -webkit-align-self: auto;
  -ms-flex-item-align: auto;
  align-self: auto;
}

.flex-item:nth-child(2) {
  -webkit-order: 0;
  -ms-flex-order: 0;
  order: 0;
  -webkit-flex: 1 0 auto;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto;
  -webkit-align-self: auto;
  -ms-flex-item-align: auto;
  align-self: auto;
}

.flex-item:nth-child(3) {
  -webkit-order: 0;
  -ms-flex-order: 0;
  order: 0;
  -webkit-flex: 0 1 auto;
  -ms-flex: 0 1 auto;
  flex: 0 1 auto;
  -webkit-align-self: auto;
  -ms-flex-item-align: auto;
  align-self: auto;
}

.flex-container {position: absolute; top: 0; bottom: 0; border: 1px solid #999; min-height: 250px;}
.flex-item {border: 1px solid #99f; margin: 5px; padding: 20px;}
<div class="flex-container">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
</div>