창 스크롤 애니메이션의 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 문을 여러 개 사용하지 마세요. 이렇게 하면 충돌이 발생할 수도 있습니다.
대체 접근 방식
특정 스크롤 위치에서 탐색 요소를 수정하는 것이 목표인 시나리오에서는 다음 접근 방식을 고려하세요.
$(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