防止绝对位置。滚动时页脚div抖动

Rok*_*jan 1 jquery scroll


而不是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)

tim*_*ail 5

我敢肯定,这种震动是不可避免的。由于您必须将顶部置于scrollTop上,因此DOM必须触发事件,JavaScript引擎必须解析javascript,然后更新DOM。

震动是DOM更新的延迟以及position:fixed存在的全部原因。

据我所知,position:fixed之所以平滑的原因是因为位置:fixed元素不必重新绘制,或者至少在滚动页面时可以重新呈现。出现这种情况的原因是,您不止一次重画屏幕,一次是滚动,一次是位置更新。