而不是position:fixed,这个小插件是跨浏览器实验,用于将absolute定位元素设置到页面底部。
而且有效。(IE6,7,8 / MOZ / Saf,Mob.Safari533.1 / O / ...)差不多了。
唯一的问题是滚动页面时-> div会晃动。
我是否需要将setInterval()或setTimeout()之类的东西绑定到.scroll()事件上?
有任何想法吗?有什么建议吗?提前致谢!
插件:
(function($) {
$.fn.jFooter = function() {
var footer = this;
var fooH = footer.outerHeight();
function setFooPos() {
winH = $(window).height();
winS = $(window).scrollTop();
tot = (winH - fooH)+winS;
footer.css({
position: 'absolute',
top: tot + 'px'
});
}
// a div to compensate the scroll start:
$('body').append('<div id="fC" style="position:relative;height:'+ fooH +'px;width:100%;clear:both;"/>');
setFooPos();
$(window).bind('scroll resize',function () {
setFooPos();
});
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我敢肯定,这种震动是不可避免的。由于您必须将顶部置于scrollTop上,因此DOM必须触发事件,JavaScript引擎必须解析javascript,然后更新DOM。
震动是DOM更新的延迟以及position:fixed存在的全部原因。
据我所知,position:fixed之所以平滑的原因是因为位置:fixed元素不必重新绘制,或者至少在滚动页面时可以重新呈现。出现这种情况的原因是,您不止一次重画屏幕,一次是滚动,一次是位置更新。
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |