【问题标题】:Fill height with flexbox inside a container用容器内的 flexbox 填充高度
【发布时间】:2016-09-06 14:10:50
【问题描述】:

我正在开发一个 Intranet,我希望内容垂直和水平居中。

我有一个这样的网站:

<div class="container">
  <!-- NAVBAR MENU -->
</div>
<!-- COULD BE container-fluid SOMETIMES -->
<div class="container">
  <div class="row">
    <div class="col-md-12">
      <!-- TITLE WITH A DROPDOWN BUTTON -->
      <h2>
          TITLE 
          <span class="pull-right">
             <button>BUTTON</button>
          </span>
        </h2>
    </div>
  </div>
  <!-- CONTENT -->
</div>
<div class="container">
  <!-- FOOTER -->
</div>

内容将始终是 body 在具有containercontainer-fluid 的 div 中的第二个子元素,后跟带有按钮上的下拉菜单的标题。

重要的是要知道,我的页脚是静态的,它的高度是 60px。

我正试图在我的第二个容器中获得一个 flexbox,在标题部分之后,它填充了所有剩余的高度。这样,只有纯内容会居中。

很遗憾,我无法做到这一点。

我尝试将我的 body 设置为一个 flexbox 并手动设置他所有的孩子:我的页脚每次都会隐藏我的页面末尾。

我尝试以最简单的方式设置单个弹性框,它不会填充缺失的高度。

html & body 得到了min-height: 100%;align-items & justify-content 已设置。

另外,我注意到,如果我将 html 设置为 height:100%;,它会每次都显示滚动条,但是单个 flexbox 会获得完整的缺失高度但不会居中(并且仍然有这个页脚问题)。

我可能错过了什么或做错了什么......

感谢您的任何帮助!

【问题讨论】:

  • 这样的? demo
  • @Michael_B 感谢您的清理 :) @RicardoRuiz 近乎完美,是的,这正是我想要的,但是当页面很长时,我的页脚仍然隐藏了一些内容。我尝试在那里和那里添加一些margin-bottom,但它没有成功。

标签: css html twitter-bootstrap flexbox


【解决方案1】:

感谢@RicardoRuiz 的回答。

最后看起来像下面的sn-p。

* {
  box-sizing: border-box;
}
body {
  margin: 0;
}
.row,
.content,
.container {
  border: 3px solid;
  padding: 1em;
}
.container:first-child {
  border-color: green;
  height: 60px;
}
.container:nth-child(2) {
  border-color: blue;
  display: flex;
  flex-direction: column;
  height: calc(100vh-160px);
}
.container:last-child {
  position: fixed;
  bottom: 0;
  width: 100%;
  border-color: red;
  height: 60px;
}
.row {
  border-color: yellow;
}
.content {
  border-color: dodgerblue;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex-basis: 100%;
  padding-bottom: 60px;
}
<div class="container">
  NAVBAR
</div>
<!-- COULD BE container-fluid SOMETIMES -->
<div class="container">
  <div class="row">
    <!-- TITLE WITH A DROPDOWN BUTTON -->
    <h2>
          TITLE 
          <span class="pull-right">
             <button>BUTTON</button>
          </span>
        </h2>
  </div>
  <div class="content">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dui sem, lacinia ac dictum ut, condimentum sit amet massa. Duis vel justo ac diam bibendum gravida vitae quis eros. Nam suscipit tellus in eros varius ullamcorper sed quis nulla. Mauris
      pharetra justo in lectus tincidunt, quis condimentum leo faucibus. Fusce quis magna laoreet, posuere metus in, scelerisque ipsum. Suspendisse potenti. Aenean eu elit et diam pellentesque mattis. Nulla facilisi. Cras scelerisque tortor dignissim
      lacus fringilla porta. Aliquam sagittis sit amet libero et ultrices. Praesent aliquet purus et ultrices semper. Integer sed lorem in augue volutpat convallis quis vel tellus. Duis venenatis orci id odio vehicula, eget feugiat lorem aliquam. Vivamus
      at tempus magna, mattis consequat sem. Aliquam porta sem vitae diam mollis, ut fringilla velit lacinia. Fusce ac suscipit elit. Proin lectus mauris, viverra sed lobortis at, ultrices vel ipsum. Cras non molestie diam. Donec lobortis lobortis magna,
      eget placerat mi tincidunt at. Quisque eget odio mauris. Nam eu tellus vitae nisl ornare finibus. Proin et enim aliquet, iaculis quam eleifend, mollis neque. Aenean auctor accumsan fermentum. Nam eget magna vehicula, tincidunt odio ut, vehicula
      arcu. Nulla sit amet turpis lacus. Sed iaculis, velit ac hendrerit imperdiet, ante lectus malesuada felis, quis tempus nibh nisl at dui. Aliquam laoreet accumsan varius. Vestibulum vel quam arcu. Praesent id semper eros, quis mollis dui. Etiam at
      sagittis lectus. Suspendisse in nisi bibendum nisl scelerisque pulvinar. Maecenas nec scelerisque augue. Donec elementum consequat tempor. Sed porta viverra diam, non pellentesque odio scelerisque id. Vestibulum mollis nibh ut tellus pretium auctor.
      Aliquam erat volutpat. In sit amet nibh lobortis, maximus arcu eget, accumsan mi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec non dolor sed dolor aliquet suscipit ut at quam. Ut dictum tellus in
      dui consectetur, eu egestas lacus sodales. Duis a luctus tellus, at efficitur magna. Quisque eleifend risus sit amet ipsum rhoncus egestas. In mauris lorem, ullamcorper quis laoreet sed, tempus vitae lectus. Integer neque leo, molestie ac aliquam
      id, lacinia et ligula. Pellentesque sagittis eleifend facilisis. Fusce nisl purus, elementum non urna in, egestas lacinia justo. Nunc libero dolor, vestibulum at tortor at, pellentesque vehicula mauris.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dui sem, lacinia ac dictum ut, condimentum sit amet massa. Duis vel justo ac diam bibendum gravida vitae quis eros. Nam suscipit tellus in eros varius ullamcorper sed quis nulla. Mauris
      pharetra justo in lectus tincidunt, quis condimentum leo faucibus. Fusce quis magna laoreet, posuere metus in, scelerisque ipsum. Suspendisse potenti. Aenean eu elit et diam pellentesque mattis. Donec lobortis lobortis magna, eget placerat mi tincidunt
      at. Quisque eget odio mauris. Nam eu tellus vitae nisl ornare finibus. Proin et enim aliquet, iaculis quam eleifend, mollis neque. Aenean auctor accumsan fermentum. Nam eget magna vehicula, tincidunt odio ut, vehicula arcu. Nulla sit amet turpis
      lacus. Sed iaculis, velit ac hendrerit imperdiet, ante lectus malesuada felis, quis tempus nibh nisl at dui. Aliquam laoreet accumsan varius. Vestibulum vel quam arcu. Praesent id semper eros, quis mollis dui. Etiam at sagittis lectus. Suspendisse
      in nisi bibendum nisl scelerisque pulvinar. Maecenas nec scelerisque augue. Donec elementum consequat tempor. Sed porta viverra diam, non pellentesque odio scelerisque id. Vestibulum mollis nibh ut tellus pretium auctor. Aliquam erat volutpat. In
      sit amet nibh lobortis, maximus arcu eget, accumsan mi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec non dolor sed dolor aliquet suscipit ut at quam. Ut dictum tellus in dui consectetur, eu egestas
      lacus sodales. Duis a luctus tellus, at efficitur magna. Quisque eleifend risus sit amet ipsum rhoncus egestas. In mauris lorem, ullamcorper quis laoreet sed, tempus vitae lectus. Integer neque leo, molestie ac aliquam id, lacinia et ligula. Pellentesque
      sagittis eleifend facilisis. Fusce nisl purus, elementum non urna in, egestas lacinia justo. Nunc libero dolor, vestibulum at tortor at, pellentesque vehicula mauris.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dui sem, lacinia ac dictum ut, condimentum sit amet massa. Duis vel justo ac diam bibendum gravida vitae quis eros. Nam suscipit tellus in eros varius ullamcorper sed quis nulla. Mauris
      pharetra justo in lectus tincidunt, quis condimentum leo faucibus. Fusce quis magna laoreet, posuere metus in, scelerisque ipsum. Suspendisse potenti. Aenean eu elit et diam pellentesque mattis. Donec lobortis lobortis magna, eget placerat mi tincidunt
      at. Quisque eget odio mauris. Nam eu tellus vitae nisl ornare finibus. Proin et enim aliquet, iaculis quam eleifend, mollis neque. Aenean auctor accumsan fermentum. Nam eget magna vehicula, tincidunt odio ut, vehicula arcu. Nulla sit amet turpis
      lacus. Sed iaculis, velit ac hendrerit imperdiet, ante lectus malesuada felis, quis tempus nibh nisl at dui. Aliquam laoreet accumsan varius. Vestibulum vel quam arcu. Praesent id semper eros, quis mollis dui. Etiam at sagittis lectus. Suspendisse
      in nisi bibendum nisl scelerisque pulvinar. Maecenas nec scelerisque augue. Donec elementum consequat tempor. Sed porta viverra diam, non pellentesque odio scelerisque id. Vestibulum mollis nibh ut tellus pretium auctor. Aliquam erat volutpat. In
      sit amet nibh lobortis, maximus arcu eget, accumsan mi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec non dolor sed dolor aliquet suscipit ut at quam. Ut dictum tellus in dui consectetur, eu egestas
      lacus sodales. Duis a luctus tellus, at efficitur magna. Quisque eleifend risus sit amet ipsum rhoncus egestas. In mauris lorem, ullamcorper quis laoreet sed, tempus vitae lectus. Integer neque leo, molestie ac aliquam id, lacinia et ligula. Pellentesque
      sagittis eleifend facilisis. Fusce nisl purus, elementum non urna in, egestas lacinia justo. Nunc libero dolor, vestibulum at tortor at, pellentesque vehicula mauris.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dui sem, lacinia ac dictum ut, condimentum sit amet massa. Duis vel justo ac diam bibendum gravida vitae quis eros. Nam suscipit tellus in eros varius ullamcorper sed quis nulla. Mauris
      pharetra justo in lectus tincidunt, quis condimentum leo faucibus. Fusce quis magna laoreet, posuere metus in, scelerisque ipsum. Suspendisse potenti. Aenean eu elit et diam pellentesque mattis.</p>
  </div>
</div>
<div class="container">
  <footer>FOOTER</footer>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 2021-06-08
    • 2012-10-28
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2012-02-11
    • 2016-08-03
    相关资源
    最近更新 更多