31

scrollTojQuery 関数によって呼び出されたときに、関数に問題がありanimateます。

ここに私のコード:

$("#button").click(function(){
    $("body").animate({scrollTop: 1400},"slow");
});

ボタンをクリックすると、本文がスクロールする前にちらつきが発生します。たとえば、(スクロール位置) 1000 にいて、ボタンをクリックすると、次のことが起こりました。

  1. ページ/画像 (スクロール位置) 1400 が表示され、(位置) 1400 に移動したようです
  2. その後、再び (位置) 1000 に移動します。これは非常に速く発生し、ちらつきのように見えます
  3. 最後に、通常のスクロールのように 1400 までスクロールします。

Firefox では常に表示され、Chrome でも表示されることがあります。

4

4 に答える 4

82

同じちらつきの問題がありました。これは、関数をトリガーするリンクのハッシュアンカーが原因でした。PreventDefault()で修正しました:

$("#button").click(function(e){
    e.preventDefault();
    $("body").animate({scrollTop: 1400},"slow");
});
于 2012-08-26T20:36:34.027 に答える
1

次のようにアニメーションを停止することで、この問題を解決しました。

$('body,html').bind('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function(e){
            if ( e.which > 0 || e.type == "mousedown" || e.type == "mousewheel" || e.type == "touchmove"){
                $("html,body").stop();
            }
        })

そこに見つかりました: Jquery .animate() ユーザーが手動でスクロールするとスクロールが停止しますか?

于 2016-08-27T00:34:48.760 に答える