> 웹 프론트엔드 > CSS 튜토리얼 > jQuery를 사용하여 두 DIV 간에 원활하게 동기화된 스크롤을 달성하는 방법은 무엇입니까?

jQuery를 사용하여 두 DIV 간에 원활하게 동기화된 스크롤을 달성하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-24 18:37:02
원래의
859명이 탐색했습니다.

How to Achieve Smooth Synchronized Scrolling Between Two DIVs with jQuery?

jQuery를 사용한 동기화된 스크롤: 동기화 문제 극복

두 DIV 요소 간의 동기화된 스크롤을 달성하려면 두 요소의 차이점을 설명하는 것이 중요합니다. 크기. 제공된 코드는 scrollTop 값을 직접 설정하므로 동기화가 일관되지 않습니다. 이 문제를 해결하려면 스크롤된 콘텐츠의 비율을 계산하고 이에 따라 scrollTop 값을 조정해야 합니다.

실제 높이와 현재 스크롤 위치를 확인하려면 다음 공식을 사용할 수 있습니다.

percentage = scrollTop / (scrollHeight - offsetHeight)
로그인 후 복사

이 계산은 스크롤된 콘텐츠의 비율을 나타내는 0에서 1 사이의 값을 제공합니다. 다른 DIV(scrollHeight - offsetHeight)에 이 값을 곱하면 비례 스크롤에 해당하는 scrollTop 값이 생성됩니다.

또한 Firefox에서 스크롤 이벤트의 무한 루프를 방지하려면 리스너를 일시적으로 바인딩 해제하고 scrollTop 값을 입력한 다음 리스너를 다시 바인딩합니다.

$divs.on('scroll', 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);
});
로그인 후 복사

이러한 개선 사항을 구현하면 다양한 크기에서도 DIV 요소 간에 원활하고 동기화된 스크롤을 달성하고 Firefox에서 잠재적인 무한 루프 문제를 방지할 수 있습니다.

위 내용은 jQuery를 사용하여 두 DIV 간에 원활하게 동기화된 스크롤을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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