jQuery에서 다양한 요소 크기로 부드럽게 동기화된 스크롤을 달성하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-25 04:45:29
원래의
422명이 탐색했습니다.

How to Achieve Smooth Synchronized Scrolling with Different Element Sizes in jQuery?

jQuery의 동기화 스크롤: 과제와 해결 방법

동기화 스크롤의 필요성은 유사한 콘텐츠를 표시하는 다양한 크기의 요소로 작업할 때 종종 발생합니다. . 직접 scrollTop 값 설정을 사용하여 기본 스크롤 동기화를 달성할 수 있지만 요소의 크기가 다를 때 제한이 발생합니다.

스크롤 동기화 해결:

에도 불구하고 비례 스크롤을 보장하려면 요소 크기가 다르면 스크롤된 콘텐츠의 비율을 고려해야 합니다. element.scrollTop / (element.scrollHeight - element.offsetHeight) 계산은 이 비율을 산출합니다. 이 값에 다른 요소(element.scrollHeight - element.offsetHeight)를 곱하면 해당 scrollTop 값이 제공됩니다.

Firefox에서 무한 루프 방지:

Firefox에서 문제가 발생함 여기서 동기화 코드는 무한 루프를 생성합니다. 이 문제를 해결하려면 scrollTop 값을 설정하는 동안 스크롤 이벤트 리스너를 일시적으로 제거한 다음 다시 바인딩할 수 있습니다.

코드 구현:

다음 코드는 솔루션을 구현합니다. :

<code class="javascript">var $divs = $('#div1, #div2');
var sync = function(e){
    var $other = $divs.not(this).off('scroll'), other = $other.get(0);
    var percentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);
    other.scrollTop = percentage * (other.scrollHeight - other.offsetHeight);
    // Firefox workaround. Rebinding without delay isn't enough.
    setTimeout( function(){ $other.on('scroll', sync ); },10);
}
$divs.on( 'scroll', sync);</code>
로그인 후 복사

이 코드는 $divs 변수를 사용하며 원하는 요소를 대상으로 조정해야 합니다. 또한 청취자 문제를 방지하기 위한 Firefox 관련 해결 방법도 포함되어 있습니다.

위 내용은 jQuery에서 다양한 요소 크기로 부드럽게 동기화된 스크롤을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿