css让页脚保持在底部位置的四种方案


Posted in HTML / CSS onJuly 23, 2022

介绍

如果你正在创建一个网页,你可能经常会想让它的页脚一直保持在最底部,无论中间的内容有多少。那么,有什么方法能快速做到么?本期我们将介绍四种css方案来解决让页脚保持在底部位置这个问题。

css让页脚保持在底部位置的四种方案

正文

绝对定位

$ft-h:60px;
body {
  min-height: 100vh;
  position: relative;
  box-sizing: border-box;
  padding-bottom: $ft-h;
}
footer{
  height: $ft-h;
  width: 100%;
  position: absolute;
  bottom: 0;
  left:0;
}

关键点在于让 footer 绝对定位置于最底部,而 body 则需要通过 padding-bottom 给其空出一段在 footer 高度的距离,并且 body 的高度必须是最小 100vh 代表可以占满窗口高度,而且 body 还要 设置 box-sizing: border-box; 这样不会产生高度溢出的问题。

这个虽然方案有一丢丢麻烦,但是兼容性会好些因为,核心是paddingabsolute 这两个属性,这样很早到浏览器都可以支持到。

弹性盒子

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
section{
  flex: 1;
}

首先还是 body 使用 min-height,确保伸展到屏幕的全高。然后,设置 flex-direction: column 让其变成为堆叠的块元素并保持整个文档流可以正常显示。最后,我们只要让内容区域的变成 flex: 1 ,为了让内容区域自动填充慢整个区域。这样页脚自然而然的就到了最下面。

这个虽然方案有都比较喜欢使用,因为兼容性 flex 目前来说还是比较不错的,而且代码量也很少,相对于也比较灵活。

网格布局

body {
  min-height: 100vh;
  display: grid;
  grid-template-rows: auto 1fr auto;
}

对你没看错,用了网格后代码量更少了。首先依然是要让 body 撑满屏幕高度。紧接着,我们使用 grid-template-rows 来正确分隔内容。这个方法使用了小数单元计算可用空间并将其分配到多行。因此,它将填充页眉和页脚之间的所有可用空间。与上面的 弹性盒子 相似,也是让内容区域自动填充满整个区域高度,把页脚堆到最下面。

这个方案虽为简洁,但是吃亏在 grid 布局受很多手机低版本的浏览器限制,但是展望网格布局应该以后会是开发者最喜欢的方案。

calc计算

section{
  min-height: calc(100vh - 60px - 60px);
}

现在代码更少了,只需要一句话就能做到了。众所周知,calc() 此CSS函数是允许在声明 CSS 属性值时执行一些计算的方法。我们只要是让内容区域的最小高度,是全屏高度然后去掉 headerfooter 的高度,这就大功告成啦~

这个方案最简洁,但是有两个问题比较突出,就是以后如果在增加一些块和更改布局时会稍微麻烦一点都要预先知道块的高度,其次也是在手机低版本的兼容上,有时候也是不尽人意。

结语

其实与其说本期讲的是让页脚保证在底部,更不如说是css基础布局的实战练习,在我们开发中,各种状况都有可能出现,最后那种方案好与不好依然是要根据当前业务场景去灵活运用的。

 到此这篇关于css让页脚保持在底部位置的四种方案的文章就介绍到这了,更多相关css页脚保持在底部位置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
使用css3实现超炫的loading加载动画效果
May 07 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
Jun 23 HTML / CSS
CSS3中的content属性使用示例
Jul 20 HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
Dec 06 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
Mar 27 HTML / CSS
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
Apr 10 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
html5使用canvas画三角形
Dec 15 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 HTML / CSS
HTML5拖拽API经典实例详解
Apr 20 HTML / CSS
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
Apr 07 HTML / CSS
浅谈为什么我的 z-index 又不生效了
Jul 15 #HTML / CSS
纯CSS实现一个简单步骤条的示例代码
Jul 15 #HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 15 #HTML / CSS
如何解决flex文本溢出问题小结
Jul 15 #HTML / CSS
使用HBuilder制作一个简单的HTML5网页
使用CSS定位HTML元素的实现方法
CSS实现背景图片全屏铺满自适应的3种方式
Jul 07 #HTML / CSS
You might like
如何在PHP中进行身份认证
2006/10/09 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
python3处理含有中文的url方法
2018/05/10 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Keras自定义IOU方式
2020/06/10 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
电气专业应届生求职信
2013/11/01 职场文书
酒店公关部经理岗位职责
2013/11/24 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
百年校庆感言
2015/08/01 职场文书
党员读书活动心得体会
2016/01/14 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书