关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
可能这个问题是网页前端开发都会碰到的。一个html页面通常会有footer部分。该部分主要显示一些网站信息、联系方式、友情链接和版权等等。
若页面内容多的时候,该部分会很自然的在整个网页底部。
若页面内容不多,甚至不满一屏的时候。该部分内容就会出现在整个浏览器中间,后面留了很多空白的位置。看起来十分别扭。如下图:

通常这种情况,我们就需要让footer部分完全放在底部。
简单实现有两种方式:
1、悬浮底部
悬浮于底部就不管什么时候都在底部,可以如下设置footer的css样式:
position:absolute; /*或者fixed*/ bottom:0;
问题是,当底部内容很多的时候,尤其还设计了响应式,会导致遮住正文内容。body部分的内容显得比较小。
2、设置body最小高度
设置body的最小高度可以在页面内容比较少的时候保证一定的页面高度。如下设置css样式:
min-height: 420px;
这种方法也存在缺点。无法找到一个合适的最小高度值,因为每个人的电脑或手机都不一样,高度都无法统一。尤其在响应式开发的时候。这种方法是不可行的。
这两种都不能满足我的需要,需要动态控制footer位置。动态控制就需要用js或jQuery。
这里我采用jQuery,需要动态判断body和footer高度与浏览器的高度比较。代码如下:
<html>
<head>
<script src="/static/js/jquery-1.11.3.min.js"></script>
</head>
<body>
<div>
正文内容
</div>
<div id="footer">
底部内容
</div>
<script type="text/javascript">
$(function(){
//窗体改变大小事件
$(window).resize(function(){
//正文高度
var body_height = $(document.body).outerHeight(true);
//底部元素高度
var bottom_height = $("#footer").outerHeight(true);
//浏览器页面高度
var window_height = $(window).height();
//判断并调整底部元素的样式
if($("#footer").hasClass('page-bottom')){
//若包含有page-bottom类,就应用了position设置
//当position为absolute时,body高度不包含这个元素
//所以页面高度需要判断body和footer之和若小于浏览器窗口
//则移除样式,让footer自然跟随在正文后面
if(body_height + bottom_height >= window_height){
$("#footer").removeClass('page-bottom');
}
}else{
//若没有page-bottom类,body高度包含footer
//判断body高度小于浏览器时,则悬浮于底部
if(body_height < window_height){
$("#footer").addClass('page-bottom');
}
}
});
//页面加载时,模拟触发一下resize事件
$(window).trigger('resize');
});
</script>
<style ="text/css">
.page-bottom{
position:absolute; /*或者fixed*/
bottom:0;
}
</style>
</body>
</html>代码说明我也写在注释里面。重点主要样式position为absolute时,body取不到footer的高度。因为footer已经跳出了body的范围,不归它管了。
另外,outerHeight获取的高度是包含margin和padding。
若您有什么其他好方法,一起交流一下吧 ^_^