ウィンドウのスクロール アニメーションの 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