首页  >  文章  >  web前端  >  jQuery中如何实现不同元素大小的平滑同步滚动?

jQuery中如何实现不同元素大小的平滑同步滚动?

DDD
DDD原创
2024-10-25 04:45:29430浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn