「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ウィンドウスクロールアニメーションのCSS値制限を制限するにはどうすればよいですか?

ウィンドウスクロールアニメーションのCSS値制限を制限するにはどうすればよいですか?

2024 年 11 月 10 日に公開
ブラウズ:452

How to Limit CSS Value Limits of Window Scrolling Animation?

ウィンドウのスクロール アニメーションの CSS 値の制限を制限する

このシナリオでは、ユーザーがスクロールするとマップ要素がスライドするという問題が発生します。ページの下の方に。ただし、地図は際限なくスクロールし続けるため、フッターが存在するためにユーザーはページの下部に到達できません。

目的は、地図を表す

のスクロールを制限することです。動的にサイズ変更される別の
の下部に到達します。

提供された JavaScript コードは、ユーザーに合わせてマップをアニメーション化して移動します。スクロール:

$(function() {

    var $sidebar   = $("#map"),
        $window    = $(window),
        offset     = $sidebar.offset(),
        topPadding = 15;

    $window.scroll(function() {
        if ($window.scrollTop() > offset.top) {
            $sidebar.stop().animate({
                marginTop: $window.scrollTop() - offset.top   topPadding
            });
        }
        else {
            $sidebar.stop().animate({
                marginTop: 0
            });
        }
    });
});

問題への対処

スクロール関数内で animate() メソッドを使用することはお勧めできません。スクロール値により、jQuery が反復的なアニメーションを実行するのを防ぎます。 stop() 関数だけでは問題を完全に解決できない可能性があります。

代わりに、CSS メソッドを使用することをお勧めします。以下に例を示します。

$(window).scroll(function() {
    var scrollVal = $(this).scrollTop();
    if ( scrollVal > offset.top) {
        $sidebar.css({
           'margin-top': (($window.scrollTop() - offset.top)   topPadding)   'px'
                       //added  'px' here to prevent old internet explorer bugs
        });
    } else {
        $sidebar.css({'margin-top':'0px'});
    }
});

また、競合が発生する可能性があるため、計算内で複数の if else ステートメントを使用することは避けてください。

代替アプローチ

Forナビゲーション要素を特定のスクロール位置に固定することが目的のシナリオでは、次の点を考慮してください。アプローチ:

$(document).ready(function() {
   $(window).scroll(function() {
       var headerH = $('.header').outerHeight(true);
      //this will calculate header's full height, with borders, margins, paddings
       console.log(headerH);
       var scrollVal = $(this).scrollTop();
        if ( scrollVal > headerH ) {
        //when scroll value reach to your selector
            $('#subnav').css({'position':'fixed','top' :'0px'});
        } else {
            $('#subnav').css({'position':'static','top':'0px'});
        }
    });
 });
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3