方法一:footer高度固定+绝对定位
<html> <head> <style type="text/css"> 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;} </style> </head> <body> <div class="header">header</div> <div class="main">main content</div> <div class="footer">footer</div> </body> </html>
效果:
方法二:footer高度固定+margin负值
<html> <head> <style type="text/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值 */ </style> </head> <body> <div class="container"> <div class="header">header</div> <div class="main">main content</div> </div> <div class="footer">footer</div> </html>
方法三:footer高度任意+js
<html> <head> <style type="text/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%;} </style> <script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript"> $(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"); } else { $("footer").removeClass("fixed-bottom"); } } footerPosition(); $(window).resize(footerPosition); }); </script> </head> <body> <div class="header">header</div> <div class="main">main content</div> <div class="footer">footer</div> </body> </html>
ref: https://segmentfault.com/a/1190000004453249