什么是Sticky footer布局?
前端开发中大部分网站,都会把一个页面分为头部区块、内容区块、页脚区块,这也是比较。往往底部都要求能固定在屏幕的底部,而非随着文档流排布。要实现的样式可以概括如下:如果页面内容不够长的时候,页脚区块在屏幕的底部;如果内容足够长的时候,页脚区块会被内容向下推送。可以以下图展示Sticky footer实现的效果:

在正常的文档流中,页面内容较少的时候,如果不做处理,页脚部分不是固定在视窗底部的。

使用sticky footer布局达到了预期的效果,及时内容区较少,页脚区块也是固定在底部。

实现方式
首先构建简单的布局代码:

<body>
<div class="content"></div>
<div class="footer"></div>
</body>

其中content为内容区。方法介绍。
一、为内容区域添加最小高度
这种方法重要用vh(viewpoint height)来计算整体视窗的高度(1vh等于视窗高度的1%),然后减去底部footer的高度,从而求得内容区域的最小高度。例如我们可以添加如下样式:

.content {
min-height: calc(100vh-footer的高度)
}

此方法需要知道footer的高度,如果高度不确定此方法不推荐。content的高度也可以用百分比来表示。

二、flex布局方式
html代码:

body {
display: flex;
flex-flow: column;
min-height: 100vh;
}
.content {
flex: 1;
}
.footer{
flex: 0;
}

这种方法就是利用flex布局对视窗高度进行分割。footer的flex设为0,这样footer获得其固有的高度;content的flex设为1,这样它会充满除去footer的其他部分。

二、负margin布局方式实现
基本构架:
html代码

<div class="wrapper clearfix">
<div class="content">
// 这里是页面内容
</div>
</div>
<div class="footer">
// 这里是footer的内容
</div>

css代码:

.wrapper {
min-height: 100%;
} .wrapper .content{
padding-bottom: 50px; /* footer区块的高度 */
} .footer {
position: relative;
margin-top: -50px; /* 使footer区块正好处于content的padding-bottom位置 */
height: 50px;
clear: both;
} .clearfix::after {
display: block;
content: ".";
height: 0;
clear: both;
visibility: hidden;
}

需要注意的:content元素的padding-bottom与footer元素的高度以及footer元素的margin-top值必须要保持一致。
这种负margin的布局方式,是兼容性最佳的布局方案,各大浏览器均可完美兼容,适合各种场景,但使用这种方式的前提是必须要知道footer元素的高度,且结构相对较复杂。

最新文章

  1. 最小生成树(prim&amp;kruskal)
  2. JAVA的包装类 【转】
  3. 我的Windows核心编程——完成端口+套接字 图解
  4. 来说说SpringMVC + JSONP的跨域请求
  5. 转: ASP.NET+ExtJs4.0+表单提交submit,上传图片到服务器
  6. 今天发现猎豹浏览器的一个大坑 Request.IsAuthenticated 一直为 false;另外附加原因以及临时的解决方法
  7. UVA 11426 GCD - Extreme (II) 欧拉函数
  8. SlimDX和WPF的合作应用
  9. Xcode中插件的安装以及Xcode升级后插件实效的解决方法
  10. Java中设计模式之单例设计模式-1
  11. Python_自定义栈
  12. 腾讯云服务器搭建Apache/PHP/MySQL环境
  13. iptables、防火墙配置、NAT端口映射
  14. BZOJ 1801--中国象棋(DP)
  15. SOE 部署错误 ClassFactory cannot supply requested class问题及解决方案
  16. 反汇编调试Android
  17. 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面
  18. Jquery表单验证插件validate
  19. Android 关于SD的操作
  20. python异常处理,多线程,多进程

热门文章

  1. 转:SqlBulkCopy类进行大数据(一万条以上)插入测试
  2. P3373线段树2
  3. 测开之路九十二:css之背景色和背景
  4. 【ABAP系列】SAP VA01屏幕增强(user-exit)
  5. TensorFlow学习笔记13-循环、递归神经网络
  6. vue集成汉字转拼音或提取首字母
  7. css的继承之width属性(容易忽略)
  8. User-Agent结构介绍及主流浏览器User-Agent大全
  9. java_第一年_JDBC(7)
  10. 一键生成APK