*新闻详情页*/>
甚么是 “Sticky Footer”
所谓 “Sticky Footer”,其实不是甚么新的前端开发定义和技术性,它指的便是1种网页页面实际效果: 假如网页页面內容不够够长时,页脚固定不动在访问器对话框的底部;假如內容充足长时,页脚固定不动在网页页面的最底部。但假如网页页面內容不足长,置底的页脚就会维持在访问器对话框底部。
先看来看下面的事例, 编码以下
<div class="header"> 顶部 </div> <div class="main"> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>底部</div> </div>
.header { background-color: #3498DB; height: 50px; line-height: 50px; text-align: center; color: #fff; } .main { overflow: auto; box-sizing: border-box; } .footer { background-color: #ECF0F1; height: 50px; line-height: 50px; text-align: center; }
仔细读者应当发现难题了,底部 footer 部位会伴随着行为主体內容高宽比转变全自动转变,当行为主体內容小于视口的高宽比时, footer 并沒有黏贴在底部. 那末处理这样难题尼?
negative margin
<div class="main"> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>底部</div> </div>
html, body { height: 100%; } .header{ background-color: #3498DB; height: 50px; line-height: 50px; text-align: center; color: #fff; position: fixed; width: 100%; } .main { min-height: 100%; overflow: auto; box-sizing: border-box; padding-bottom: 50px; padding-top: 50px; margin-bottom: ⑸0px; } .footer { background-color: #ECF0F1; height: 50px; line-height: 50px; text-align: center; }
固定不动高宽比处理计划方案
应用以下特性
calc() 是 CSS3引进的,让你在申明CSS特性值时能够实行1些测算.
它能够用在1些标值场所; 详尽能够查阅这里MDN
vh(Viewport Height): 顾明思议,表明的是视口的高宽比.
详尽信息内容和适配能够查阅这里: caniuse
对于上面的编码开展改动,以下
.main { min-height: calc(100vh - 50px - 50px); }
这样进行大家期待的,可是有个缺陷便是每次大家都要去测算 header、footer 的高宽比.
这明显有缺憾, 倘若DOM构造等级多的话,必须测算的內容更多.
absolute
absolute坚信大伙儿熟习但是了,这里就不在唠叨了; 这里留意这个就行, absolute 元素其部位是依据甚么来开展测算并开展精准定位的?
<div class="header"> 头顶部 </div> <div class="main"> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>底部</div> </div>
html{ position: relative; min-height: 100%; } body{ margin-bottom: 50px; } .header { background-color: #3498DB; height: 50px; line-height: 50px; text-align: center; color: #fff; } .main { overflow: auto; } .footer { position: absolute; bottom:0; width: 100%; background-color: #ECF0F1; height: 50px; line-height: 50px; text-align: center; }
编码是否很简易,这里关键 position的运用:
1 默认设置状况下, 当给某个元素设定为 position:absolute 时, 在先祖元素沒有设定 position: absolute or fixed or relative
时, 其默认设置相对原始包括块( initial containing block ).
2 甚么原始化包括块?
The containing block in which the root element lives is a rectangle called the initial containing block. For continuous media, it has the dimensions of the viewport and is anchored at the canvas origin;
这是w3c对包括块详细介绍, 这段话大约意思, 根元素(document)为默认设置为原始化包括块,其原始化块的尺寸为视口的尺寸.
了解这几个定义后,大家再看来上面的编码就1目了然了!
html{ position: relative; min-height: 100%; } body{ margin-bottom: 50px; }
Flexbox
Flexbox是最完善的计划方案。只必须几行CSS编码便可以完成,并且像上面测算或加上附加的HTML元素。
改动编码以下:
<div class="container"> <div class="header"> 顶部 </div> <div class="main"> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> <p>正中间一部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>底部</div> </div> </div>
html, body { height: 100%; } .container { display: flex; flex-direction: column; min-height: 100%; } .header { background-color: #3498DB; height: 50px; line-height: 50px; text-align: center; color: #fff; } .main { overflow: auto; box-sizing: border-box; flex: 1; } .footer { background-color: #ECF0F1; height: 50px; line-height: 50px; text-align: center; }
最后实际效果以下:
negative =margin、固定不动宽度、absolute 都依靠底部高宽比为固定不动.
1般强烈推荐应用 absolute 和 flex 完成方法; 实际用那种能够依据实际情景来应用.
以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。
Copyright © 2002-2020 免费自助建站_手机建站平台_wap建站_免费自助建站平台_H5网站,H5模板建站 版权所有 (网站地图) 粤ICP备10235580号