关闭firefox的平滑滚动?

时间:2012-06-12 11:50:08

标签: javascript jquery

Firefox新的平滑滚动功能会导致滚动回调在动画的每一步触发。

DEMO in FF and Chrome to see the difference

有没有办法让它如此

  1. 仅在页面滚动完成后触发一个事件
  2. 使页面突然像在Chrome中一样滚动

2 个答案:

答案 0 :(得分:4)

试试这个:

function throttle( fn, timeout ) {
    var tid = 0;
    return function() {
        clearTimeout( tid );
        var args = [].slice.call( arguments ),
            ctx = this;

        tid = setTimeout( function() {
            fn.apply( ctx, args );
        }, timeout );
    };
}

$(window).on("scroll", throttle( function() {
    $('div').eq(0).append('scroll happened');
}, 100));

只有在100毫秒内没有滚动时才会触发滚动。

http://jsfiddle.net/NLGHS/1/

答案 1 :(得分:0)

这取决于你的目的。我根据您的代码猜测,当用户向下滚动页面时,您想要触发动画,有点像Ben the Bodyguard:http://benthebodyguard.com/index.php

要实现此目的,您可以将动画绑定到页面中的位置。您可以从传递给scroll方法的事件对象获取当前滚动位置。然后,您需要做一些数学运算来确定当前滚动位置是否已经改变到足以触发下一个动画。