スクロールイベントでの反応が遅い

3D-kreativ

ページの上部にメニュー付きのヘッダー要素があります。下にスクロールすると、ヘッダーが低い高さにアニメーション化されます。上にスクロールして一番上に到達すると、ヘッダーが元のサイズにアニメーション化されます。

しかし、それは完璧には機能していません。何かが起こるまでに2秒かかることもあります。特に上にスクロールして上に到達したとき。パフォーマンスを向上させるためにこのコードを改善する方法はありますか?

// Scroll show menu
$(window).scroll(function(){
    scrollPosition = $(this).scrollTop();

    if (scrollPosition >= 150) {
        $("header").animate({
            height: '65px'
        }); 
    }

    if (scrollPosition <= 100) {
        $("header").animate({
            height: '130px'
        });
    }
});
ロリー・マクロサン

問題は、scrollスクロールされるピクセルごとにイベントが1回発生するためです。したがって、500px下にスクロールすると、350のアニメーションがキューに追加されます。

これを防ぐためstop()に、キュー内の既存のアニメーションをクリアするために使用できます。これを試して:

$(window).scroll(function(){
    scrollPosition = $(this).scrollTop();

    if (scrollPosition >= 150) {
        $("header").stop().animate({
            height: '65px'
        }); 
    }

    if (scrollPosition <= 100) {
        $("header").stop().animate({
            height: '130px'
        });
    }
});

フィドルの例

@Proxytypeによって提案されたクリーナー液は、およびCSSトランジションを使用することであるaddClassremoveClassjQueryを使って:

header {
    height: 130px;
    transition: height 0.3s;
}
header.small {
    height: 65px;
}
$(window).scroll(function(){
    scrollPosition = $(this).scrollTop();
     $("header")[scrollPosition >= 150 ? 'addClass' : 'removeClass']('small');
});

上記の最後の行は、このロジックの要約バージョンです。

if (scrollPosition >= 150) {
    $('#header').addClass('small');
}
else {
    $('#header').removeClass('small');
}

フィドルの例

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

非常に遅いJavaScriptスクロールイベントの修正

分類Dev

親divイベントに対するスクロールバーの反応

分類Dev

反応でスクロールイベントのクラスを切り替える方法は?

分類Dev

CoordinatorLayoutでAppBarLayoutが折りたたまれる前に、FABを下向きのスクロールイベントに反応させる方法

分類Dev

スクロールイベントリスナーからのsetStateフックに反応する

分類Dev

モバイル版のサイトでスクロールが遅い

分類Dev

スクロールイベントで変更画像ソースに反応する

分類Dev

画像を検出するための「ロード」イベントリスナーが実行され、ロードが反応で機能していません

分類Dev

スロットルが削除されていない状態でイベントリスナーを反応させる

分類Dev

最後の入力で遅く反応フックreduxレデューサーonChangeイベント

分類Dev

ポインターイベントを使用して、スクロールイベントにのみ反応するにはどうすればよいですか?

分類Dev

スクロール可能なdiv内のdivでスクロールイベントが発生しない

分類Dev

反応のスクロールでクラスが変更されない

分類Dev

PHPとMySQLのログインスクリプトが反応しない

分類Dev

IE11のマウスホイールスクロールでmouseleaveイベントが発生しない

分類Dev

反応コンポーネントにスクロールイベントを追加する方法

分類Dev

スクロールイベントがモバイルで機能しない

分類Dev

スクロール時にjsイベントを反応させる方法他のコンポーネントをロードする

分類Dev

ローカルストレージ変更イベント+反応

分類Dev

symfonyイベントサブスクライバーがディスパッチに反応しない

分類Dev

反応フックでイベント処理を遅く/デバウンスする方法は?

分類Dev

新規の Manjaro インストールで pacman のダウンロード速度が非常に遅い

分類Dev

スクロールイベントとホイールイベントが重なっているときの理解できない動作

分類Dev

ウィンドウのスクロールイベントが機能しないのはなぜですか?

分類Dev

反応フックのイベントリスナーonMouseMove:イベントオブジェクトが定義されていないか、clientX / Yがnullです

分類Dev

一部のクリックイベントでは機能するが他のイベントでは機能しないスクロール機能

分類Dev

ネイティブベースとネイティブの反応(予期しないトークンエラー)

分類Dev

次のスクロールイベントの遅延を設定するにはどうすればよいですか

分類Dev

反応スクロールナビゲーションでコンポーネントを表示できない

Related 関連記事

  1. 1

    非常に遅いJavaScriptスクロールイベントの修正

  2. 2

    親divイベントに対するスクロールバーの反応

  3. 3

    反応でスクロールイベントのクラスを切り替える方法は?

  4. 4

    CoordinatorLayoutでAppBarLayoutが折りたたまれる前に、FABを下向きのスクロールイベントに反応させる方法

  5. 5

    スクロールイベントリスナーからのsetStateフックに反応する

  6. 6

    モバイル版のサイトでスクロールが遅い

  7. 7

    スクロールイベントで変更画像ソースに反応する

  8. 8

    画像を検出するための「ロード」イベントリスナーが実行され、ロードが反応で機能していません

  9. 9

    スロットルが削除されていない状態でイベントリスナーを反応させる

  10. 10

    最後の入力で遅く反応フックreduxレデューサーonChangeイベント

  11. 11

    ポインターイベントを使用して、スクロールイベントにのみ反応するにはどうすればよいですか?

  12. 12

    スクロール可能なdiv内のdivでスクロールイベントが発生しない

  13. 13

    反応のスクロールでクラスが変更されない

  14. 14

    PHPとMySQLのログインスクリプトが反応しない

  15. 15

    IE11のマウスホイールスクロールでmouseleaveイベントが発生しない

  16. 16

    反応コンポーネントにスクロールイベントを追加する方法

  17. 17

    スクロールイベントがモバイルで機能しない

  18. 18

    スクロール時にjsイベントを反応させる方法他のコンポーネントをロードする

  19. 19

    ローカルストレージ変更イベント+反応

  20. 20

    symfonyイベントサブスクライバーがディスパッチに反応しない

  21. 21

    反応フックでイベント処理を遅く/デバウンスする方法は?

  22. 22

    新規の Manjaro インストールで pacman のダウンロード速度が非常に遅い

  23. 23

    スクロールイベントとホイールイベントが重なっているときの理解できない動作

  24. 24

    ウィンドウのスクロールイベントが機能しないのはなぜですか?

  25. 25

    反応フックのイベントリスナーonMouseMove:イベントオブジェクトが定義されていないか、clientX / Yがnullです

  26. 26

    一部のクリックイベントでは機能するが他のイベントでは機能しないスクロール機能

  27. 27

    ネイティブベースとネイティブの反応(予期しないトークンエラー)

  28. 28

    次のスクロールイベントの遅延を設定するにはどうすればよいですか

  29. 29

    反応スクロールナビゲーションでコンポーネントを表示できない

ホットタグ

アーカイブ