function fixedBox(xidi,footer,jianju){ var xidiClass='.'+xidi; var footerClass='.'+footer; var clientHeight=$(window).height(); var xidiHeight=$(xidiClass).height();//吸底div的高度 var footerHeight=$(footerClass).height();//底部div的高度 var aa=clientHeight-xidiHeight; $(xidiClass).addClass('fixed').css('top',aa); var boxUp=$(footerClass)[0].offsetTop-jianju;//jianju指的是底部div与boxUp之间固有的距离 var bb=boxUp+xidiHeight-clientHeight; function judge(){ var dd=$(document).scrollTop(); if(dd>bb){ $(xidiClass).removeClass('fixed').css('top','0px'); $(footerClass).css('margin-top','0px'); }else{ $(xidiClass).addClass('fixed').css('top',aa); $(footerClass).css('margin-top',xidiHeight); } } judge(); $(document).scroll(function(){ judge(); }); }
执行代码:
fixedBox('people-foot',"footer",50)
注意的是
①要在css中设置相应的fixed样式;
②一定要确定准确boxUp的值,也就是吸底元素距离最上册的高度!
③当切换tab时,要注意的是:吸底元素xidi回归到原位置时,底部元素与xidi的上面元素要撑开一段距离,但是切换tab后,该距离没有消失,仍然保留。导致后面切换tab时,底部与上册的距离发生变化,因此有两种方法:
(1)每次tab切换时,将底部div与吸底元素的上部div的距离恢复
(2)每次切换tab时,修改函数fixedBox的第三个参数jianju的值,也就是在原来参数的基础上加上吸底元素的高度。
fixedBox('people-foot',"footer",50+$('.xidi').height());