将 footer 保持在底部的最好方法
来源:互联网 发布:淘宝学院培训图片 编辑:程序博客网 时间:2024/06/05 19:50
当你在布局网页时,有可能会遇到类似下面的这种情况
导致这一问题的原因是页面内容太少,无法将内容区域撑开,从而在 footer 下面留下一大块空白。
本文将介绍一种现代化的方法,确保 footer 始终处于页面的底部。
解决方法
解决该问题的最好方法是采用 flexbox——CSS3提供的一种先进布局模型,旨在建立具有适应性的布局。如果你对 flexbox 还不怎么熟悉,文章最后有一些扩展阅读链接,可以帮助你了解 flexbox。
我们的演示页面应该具备 Header、主体内容区域和 Footer,下面是该页面的 HTML
<body> <header>...</header> <section class="main-content">...</section> <footer>...</footer></body>
为了启用 flex模式,我们将 body 的 display 属性设置为 flex, 然后将方向属性设置为列, (默认是行,也就是横向布局)。同时,将html 和 body 元素的高度设置为100%,使其充满整个屏幕。
html{ height: 100%;}body{ display: flex; flex-direction: column; height: 100%;}
现在,我们需要调整各个区域占用的页面空间,我们将通过flex 属性来达到这一目的,该属性实际包含了三个属性,分别是:
- flex-grow:元素在同一容器中对可分配空间的分配比率,及扩展比率
- flex-shrink:如果空间不足,元素的收缩比率
- flex-basis:元素的伸缩基准值
我们希望 header 和footer 只占用他们应该占用的空间,将剩余的空间全部交给主体内容区域
header{ /* 我们希望 header 采用固定的高度,只占用必须的空间 */ /* 0 flex-grow, 0 flex-shrink, auto flex-basis */ flex: 0 0 auto;}.main-content{ /* 将 flex-grow 设置为1,该元素会占用全部可使用空间 而其他元素该属性值为0,因此不会得到多余的空间*/ /* 1 flex-grow, 0 flex-shrink, auto flex-basis */ flex: 1 0 auto;}footer{ /* 和 header 一样,footer 也采用固定高度*/ /* 0 flex-grow, 0 flex-shrink, auto flex-basis */ flex: 0 0 auto;}
最终的效果如下图所示。通过点击中央的粉红按钮改变主体内容,footer 会始终显示在页面的最底部。
demo 页面地址:http://demo.tutorialzine.com/2016/03/quick-tip-the-best-way-to-make-sticky-footers/ (看效果可能需要翻墙)
结论
如你说见,如果是从零开始构建布局,flexbox 将会是你的得力助手。除了极少数的例外,所有的主流浏览器都支持 flexbox,就 IE 来说,IE9以后的版本都是支持的。
下面是一些学习 flexbox 布局模型不错的教程和速查表
- CSS-Trick 的 flex box 快速指南
- 一个专门提供酷炫 flexbox 技术的网站:Solved by Flexbox
- 5分钟互动教程
来自:http://www.jianshu.com/p/4896e6936ce3
- 一个将 footer 保持在底部的最好方法
- 将 footer 保持在底部的最好方法
- 将footer固定在页面底部的实现方法
- footer固定在页面底部的几种方法
- css让footer永远保持在页面底部
- 完美解决HTML中footer保持在页面底部问题
- 将浏览器/DIV中滚动条保持在最底部的方法
- 将滚动条(scrollbar)保持在最底部的方法
- 网页内容高度不够时,让footer处于页面底部的方法(不是固定在底部)
- footer至于底部的四种方法
- footer固定在底部
- android 保持菜单一直在底部的实现方法
- 网站设计:将Footer固定在浏览器底部
- jquery mobile开发中footer一直在底部的设置方法
- footer适应在窗口或者页面底部的css实现方法
- 前端——使footer永远在网页底部的方法
- 如何让Footer无论页面长短都在最底部, 并和正文保持固定高度?
- footer 在页面对底部
- andorid安卓优秀博文源码推荐集锦
- Oracle学习笔记 -- day03 修改密码、基本查询、条件查询、模糊查询、排序查询
- typedef的用法总结
- springIOC与AOP
- iOS @2x 与@3x 图的详解
- 将 footer 保持在底部的最好方法
- Git远程操作详解
- Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错
- 内核时钟操作
- Glide使用详解(二)
- 日常工作中遇到的那些坑
- Nexus创建本地Maven仓库(Maven私服)
- Android之fragment记载
- leetcode[Maximum Product of Three Numbers]//待整理多种解法