html - 如何将页脚保持在底部,直到内容充满主体高度?

标签 html css sass flexbox

<分区>

我想将页脚保留在浏览器的底部,直到内容填满主体高度。让它的内容框为空。

执行此操作的正确方法是什么?

这是我的尝试:

Live Demo

SCSS:

.wrapper.container-fluid{
    padding:0;
    margin: 0;
    border:2px dashed red;
    display: flex;
    flex-direction:column;
    height: 100%;
    max-height:inherit;

    header{
        border: 1px  solid blue;
    }

    div.content{
        border:1px solid gray;
        display: flex;
        flex-direction:row;
        height: 100%;

        .leftnavi{
            border:1px solid gray;
            width: 20%;
            background:lightgray;
        }

        .rightContent{
            border: 1px solid red;
            max-width: 100%;
            width: 100%;
            background:lightgreen;
        }

    }

    footer{
        border: 1px solid green;
    }
}

html:

<div class="wrapper container-fluid">

    <header>
        <h2>Header title goes here</h2>
    </header>

    <div class="header-navi">
        Header navi goes here
    </div>

    <div class="content">
        <div class="leftnavi">
            I am left navi
        </div>
        <div class="rightContent">
            <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem quod labore distinctio nulla delectus, recusandae officiis at. Earum accusamus ea, sed dignissimos. Voluptatem, exercitationem! Dignissimos porro labore vel velit beatae.</div>

        </div>
    </div>

    <footer>Footer goes here</footer>

</div>

最佳答案

第一步是将容器的min-height设置为100vh4px 是由于您的 2px 边框(2px 顶部,2px 底部)。

.wrapper.container-fluid {
  …
  border: 2px dashed red;
  min-height: calc(100vh - 4px);
}

最后一步是将 flex-grow: 1 设置到主要内容部分。页脚将始终位于页面底部(如果内容需要滚动,则更靠下)。

div.content {
   …
  flex-grow: 1;
}

演示

.wrapper.container-fluid {
  padding: 0;
  margin: 0;
  border: 2px dashed red;
  display: flex;
  flex-direction: column;
  height: 100%;
  max-height: inherit;
  min-height: calc(100vh - 4px);  /* Added */
}
.wrapper.container-fluid header {
  border: 1px solid blue;
}
.wrapper.container-fluid div.content {
  border: 1px solid gray;
  display: flex;
  flex-direction: row;
  height: 100%;
  flex-grow: 1; /* Added */
}
.wrapper.container-fluid div.content .leftnavi {
  border: 1px solid gray;
  width: 20%;
  background: lightgray;
}
.wrapper.container-fluid div.content .rightContent {
  border: 1px solid red;
  max-width: 100%;
  width: 100%;
  background: lightgreen;
}
.wrapper.container-fluid footer {
  border: 1px solid green;
}
body {
  margin: 0;
}
<div class="wrapper container-fluid">

  <header>
    <h2>Header title goes here</h2>
  </header>

  <div class="header-navi">
    Header navi goes here
  </div>

  <div class="content">
    <div class="leftnavi">
      I am left navi
    </div>
    <div class="rightContent">
      <div>Lorem ipsum dolor sit amet</div>

    </div>
  </div>

  <footer>Footer goes here</footer>


</div>

jsFiddle

关于html - 如何将页脚保持在底部,直到内容充满主体高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55254927/

相关文章:

css - Internet Explorer 8 中的 LI 元素

html - 如何在 SASS 中从 Web 添加 .ttf 字体文件以在 HAML 中显示

asp.net - HTML5 和 ASP.Net 4.0

javascript - Joomla 自定义表单字段类型

html - 如何使用 bootstrap 将大于其容器的段落元素居中?

node.js - Node Sass 还不支持你当前的环境 : Linux 64-bit with false

ruby-on-rails - 在 rails 3.2.3 中将 stylesheet_engine 设置为 sass

javascript - 使用 jquery/javascript 单击切换

html - AngularJS HTML5 嵌套路由

html - 页脚不粘在底部,问题在移动设备上放大