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 相关文章推荐
css3实现背景模糊的三种方式
Mar 09 HTML / CSS
css3中检验表单的required,focus,valid和invalid样式
Feb 21 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
Jan 12 HTML / CSS
浅谈cookie和localStorage那些事
Aug 27 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
Jan 07 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
Jun 25 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
Mar 24 HTML / CSS
HTML5中外部浏览器唤起微信分享
Jan 02 HTML / CSS
html5简介及新增功能介绍
May 18 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
Mar 09 HTML / CSS
css中:last-child不生效的解决方法
Aug 05 HTML / CSS
CSS实现鼠标悬浮动画特效
May 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+DBM的同学录程序(5)
2006/10/09 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
php curl基本操作详解
2013/07/23 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP数组实例详解
2016/06/26 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
puppeteer库入门初探
2019/01/09 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python3简单实现串口通信的方法
2019/06/12 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
《世界多美呀》教学反思
2014/03/02 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
运动会跳远广播稿
2015/08/19 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技