寫在最前:Sticky Footer是css的一種佈局場景。頁腳footer永遠固定在頁面的底部,頁面內容不夠長的時候頁腳黏在視窗底部,內容足夠長時會被向下移動。老式門戶網站因爲內容太短經常版權頁腳前移,移動端特定佈局也須要Sticky Footer來解決這些問題。css
已知底部高度,利用絕對定位和padding完美兼容
https://codepen.io/qietuniu/pen/KYxMwvhtml
DOM節點git
<div class="container"> <div class="header"></div> <div class="section"> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div> </div>
樣式代碼github
html, body { height: 100%; } .container { position: relative; min-height: 100%; height: auto !important; height: 100%; /*IE6不識別min-height*/ } .section { padding-bottom: 60px; } .footer { position: absolute; width: 100%; height: 60px; bottom: 0px; }
已知底部高度,利用padding-bottom和margin-top完美兼容
https://codepen.io/qietuniu/pen/dLqpdR佈局
DOM節點flex
<div class="container"> <div class="header"></div> <div class="section"> </div> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div>
樣式代碼網站
html, body { height: 100%; } .container { min-height: 100%; height: auto !important; height: 100%; /*IE6不識別min-height*/ } .section { padding-bottom: 60px; } .footer { position: relative; margin-top: -60px; width: 100%; height: 60px; }
已知底部高度,新增塊級元素填補頁腳遮擋,實現完美兼容
https://codepen.io/qietuniu/pen/dLqpezspa
DOM節點code
<div class="container"> <div class="header"></div> <div class="section"> </div> <div class="placeholder"></div> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div>
樣式代碼htm
html, body { height: 100%; } .container { min-height: 100%; height: auto !important; height: 100%; /*IE6不識別min-height*/ margin-bottom: -60px; } .placeholder, .footer { height: 60px; }
底部不定高度,利用表格屬性實現完美兼容
https://codepen.io/qietuniu/pen/QPVKVR
DOM節點
<div class="container"> <div class="header"></div> <div class="section"> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div> </div>
樣式代碼
html, body { height: 100%; } .container { display: table; width: 100%; min-height: 100%; } .section { display: table-row; height: 100%; }
vh存在兼容有限,通常在移動端使用。100vh可代替body和html的100%來拿到視口高度實現效果
https://codepen.io/qietuniu/pen/NmLRmV
DOM節點
<div class="container"> <div class="header"></div> <div class="section"> </div> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div>
樣式代碼
.container { min-height: calc(100vh - 60px); } .footer { height: 60px; }
底部不定高度,利用flex彈性佈局實現效果,兼容性有限建議移動端使用
https://codepen.io/qietuniu/pen/EJeNYW
DOM節點
<div class="container"> <div class="header"></div> <div class="section"> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div> </div>
樣式代碼
.container { display: flex; flex-flow: column; min-height: 100vh; } .section { flex: 1 }
底部不定高度,利用Grid網格實現效果,兼容性有限建議移動端使用
https://codepen.io/qietuniu/pen/EJeNYW
DOM節點
<div class="container"> <div class="header"></div> <div class="section"> </div> <div class="footer">Copyright© 1994-2019 切圖妞</div> </div>
樣式代碼
.container { min-height: 100vh; display: grid; grid-template-rows: 1fr auto; } .footer { grid-row-start: 2; grid-row-end: 3; }
以上方法各有優劣,根據使用場景選擇合適的方案
場景 | 方案 |
---|---|
兼容性要求高 | ①②③ |
底部不固定高度 | ④⑥⑤⑦ |
PC端建議 | ①② |
移動端建議 | ①②⑥ |
尊重原創,如需轉載請註明出處!