Flexgrid圣杯,高度100%

时间:2017-07-06 15:35:35

标签: html css html5 css3 flexbox

我对#34;圣杯"布局,您会注意到#mainmin-height: 800px。我真正想要的是100%的高度,然后当我在section内添加内容时,其余的布局继续下去(就像现在一样)。

任何想法如何实现这一点,100%高度并没有明确设置800px?



body {
  font: 24px Helvetica;
  background: #999999;
  margin: 0;
  padding: 0;
  height: 100%;
}

#main {
  min-height: 800px;
  margin: 0;
  padding: 0;
  display: flex;
  flex-flow: row;
}

#main>article {
  border: 1px solid #cccc33;
  background: #dddd88;
  flex: 3 1 60%;
  order: 3;
}

#main>nav {
  border: 1px solid #8888bb;
  background: #ccccff;
  flex: 1 6 70px;
  order: 1;
  max-width: 70px;
  min-width: 70px;
}

#main>aside {
  border: 1px solid #8888bb;
  background: #ccccff;
  flex: 1 6 300px;
  order: 2;
  max-width: 300px;
  min-width: 300px;
}

header {
  display: block;
  padding: 5px;
  min-height: 70px;
  border: 1px solid #eebb55;
  background: #ffeebb;
}

section {
  margin: 10px;
}

.container {
  margin: 0;
  padding: 0;
  display: flex;
  flex-flow: row;
}

.container>.field {
  width: 100%;
  background: #dddd88;
  order: 2;
}

.container>.left {
  width: 4px;
  background: black;
  order: 1;
}

.container>.right {
  width: 4px;
  background: black;
  order: 3;
  display: flex;
}

.top,
.bottom {
  display: block;
  height: 4px;
  background: red;
}

<div id='main'>
  <article>
    <header>header</header>
    <section>
      <div class="top"></div>
      <div class="container">
        <div class="field">
          Sub Container w/ borders
        </div>
        <div class="left"></div>
        <div class="right"></div>
      </div>
      <div class="bottom"></div>
    </section>
  </article>
  <nav>nav</nav>
  <aside>aside</aside>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:3)

如果您希望元素占据100%视口高度,并选择展开以容纳其他内容,请使用min-height: 100vhdemo)。

由于以下帖子中解释的原因,百分比高度不如视口百分比高度那样高效且易于使用。