2

Firefox の新しいスムーズ スクロール機能により、スクロール コールバックがアニメーションの各ステップでトリガーされます。

違いを確認するための FF と Chrome のデモ

それを持っている方法はありますか

  1. ページのスクロールが終了したときに 1 つのイベントのみを発生させます
  2. Chrome のようにページを急激にスクロールさせる
4

2 に答える 2

3

これを試して:

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/

于 2012-06-12T11:56:42.383 に答える
0

それはあなたの目的によります。あなたのコードに基づいて、ユーザーがページを下にスクロールするときにアニメーションをトリガーしたいという推測をしています。Ben the Bodyguard: http://benthebodyguard.com/index.php

これを実現するには、アニメーションをページ内の位置に関連付けます。scroll メソッドに渡されるイベント オブジェクトから、現在のスクロール位置を取得できます。次に、現在のスクロール位置が次のアニメーションをトリガーするのに十分なほど変化したかどうかを判断するために、いくつかの計算を行う必要があります。

于 2012-06-12T13:50:27.093 に答える