html - 如何将页脚保持在底部,直到内容充满身体高度?
问题描述
我想将页脚保留在浏览器的底部,直到内容填满身体高度。让它的内容框为空。
这样做的正确方法是什么?
这是我的尝试:
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
容器的 设置为100vh
。这4px
是由于您的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>
推荐阅读
- android - 向同一活动中的两个不同函数请求 WRITE_EXTERNAL_STORAGE 权限
- c# - 此 GetUniqueInt() 方法的时间复杂度
- node.js - 无法使用 node.js 安装 appium
- oracle - 如何确保永远不会得到 ora-01438:值大于此列允许的指定精度?
- c# - 尝试下载 pdf 文件时线程被中止的问题
- ansible - Ansible playbook 使用 sed 将查找废气放入文本文件
- haskell - 代数数据类型字段名称无法识别
- pandas - 将制表符和换行符分隔的字符串转换为 pandas 数据框
- java - Java - 防止 HashMap 影响原始值
- cabal - 如何在 cabal 或堆栈文件中指定 ghc 版本