HTML結構:css
<body> <header>header</header> <main>main content</main> <footer>footer</footer> </body>
CSS設置:html
html{height:100%;} body{min-height:100%;margin:0;padding:0;position:relative;} header{background-color: #ffe4c4;} main{padding-bottom:100px;background-color: #bdb76b;}/* main的padding-bottom值要等於或大於footer的height值 */ footer{position:absolute;bottom:0;width:100%;height:100px;background-color: #ffc0cb;}
首先,設置body的高度至少充滿整個屏幕,而且body做爲footer絕對定位的參考節點;
其次,設置main(footer前一個兄弟元素)的padding-bottom值大於等於footer的height值,以保證main的內容可以所有顯示出來而不被footer遮蓋;
最後,設置footer絕對定位,並設置height爲固定高度值
。瀏覽器
HTML結構:工具
<body> <div class="container"> <header>header</header> <main>main content</main> </div> <footer>footer</footer> </body>
CSS設置:佈局
html,body{height:100%;margin:0;padding:0;} .container{min-height:100%;} header{background-color: #ffe4c4;} main{padding-bottom:100px;background-color: #bdb76b;}/* main的padding-bottom值要等於或大於footer的height值 */ footer{height:100px;margin-top:-100px;background-color: #ffc0cb;}/* margin-top(負值的)高度等於footer的height值 */
此方法把footer以前的元素放在一個容器裏面,造成了container和footer並列的結構:
首先,設置.container的高度至少充滿整個屏幕;
其次,設置main(.container最後一個子元素)的padding-bottom值大於等於footer的height值;
最後,設置footer的height值和margin-top負值
。code
這種方法沒有使用絕對定位,但html結構的語義化不如方法一中的結構清晰。htm
也能夠設置負值的margin-bottom在.container上面,此時html結構變化以下:rem
<body> <div class="container"> <header>header</header> <main>main content</main> <div class="empty"></div> </div> <footer>footer</footer> </body>
CSS設置:it
html,body{height:100%;margin:0;padding:0;} .container{min-height:100%;margin-bottom:-100px;} .empty,footer{height:100px;}
使用一個空的div把footer容器推到頁面最底部,同時給container設置一個負值的margin-bottom,這個margin-bottom與footer和.empty的高度相等。io
雖然多了一個空的div,語義上也不怎麼好,可是相比前面爲main元素設置padding-bottom的方法有一個明顯的好處:當網頁內容不滿一屏的時候,若是須要爲main元素設置邊框、背景色的時候,padding-bottom硬生生地撐出了一片空白,真真是有點醜,可是加個空的div以後,佈局方式做用在.empty上,對main的css設置就不影響了,算是一個好處吧!
HTML結構:
<body> <header>header</header> <main>main content</main> <footer>footer</footer> </body>
CSS設置:
html,body{margin:0;padding: 0;} header{background-color: #ffe4c4;} main{background-color: #bdb76b;} footer{background-color: #ffc0cb;} /* 動態爲footer添加類fixed-bottom */ .fixed-bottom {position: fixed;bottom: 0;width:100%;}
js代碼:
$(function(){ function footerPosition(){ $("footer").removeClass("fixed-bottom"); var contentHeight = document.body.scrollHeight,//網頁正文全文高度 winHeight = window.innerHeight;//可視窗口高度,不包括瀏覽器頂部工具欄 if(!(contentHeight > winHeight)){ //當網頁正文高度小於可視窗口高度時,爲footer添加類fixed-bottom $("footer").addClass("fixed-bottom"); } } footerPosition(); $(window).resize(footerPosition); });