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 clip-path 用法介绍详解
Mar 01 HTML / CSS
CSS3实现类似翻书效果的过渡动画的示例代码
Sep 06 HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
Feb 10 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
css3 media 响应式布局的简单实例
Aug 03 HTML / CSS
利用纯CSS3实现tab选项卡切换示例代码
Sep 21 HTML / CSS
CSS3实现头像旋转效果
Mar 13 HTML / CSS
HTML5 canvas 基本语法
Aug 26 HTML / CSS
Html5实现iPhone开机界面示例代码
Jun 30 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
Dec 17 HTML / CSS
canvas需要在标签里直接定义宽高
Dec 17 HTML / CSS
HTML5的postMessage的使用手册
Dec 19 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实现模仿socket请求返回页面的方法
2014/11/04 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
python根据京东商品url获取产品价格
2015/08/09 Python
python实现两个文件夹的同步
2019/08/29 Python
python flask搭建web应用教程
2019/11/19 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
档案工作汇报材料
2014/08/21 职场文书
民族精神月活动总结
2014/08/28 职场文书
五四青年节活动总结
2015/02/10 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
python实战之90行代码写个猜数字游戏
2021/04/22 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android