首页 >web前端 >css教程 >如何使用 jQuery 实现两个 Div 之间平滑同步的滚动?

如何使用 jQuery 实现两个 Div 之间平滑同步的滚动?

Barbara Streisand
Barbara Streisand原创
2024-10-25 13:38:02471浏览

How to Implement Smooth and Synchronized Scrolling Between Two Divs with jQuery?

同步滚动变得流畅

使用 jQuery 实现两个 DIV 之间的同步滚动可以通过以下代码实现:

$(document).ready(function() {
    $("#div1").scroll(function () {
        $("#div2").scrollTop($("#div1").scrollTop());
    });
    $("#div2").scroll(function () {
        $("#div1").scrollTop($("#div2").scrollTop());
    });
});

但是,这段代码遇到了两个挑战:

1. Div大小不同导致滚动不同步

计算比例滚动位置需要确定滚动内容的百分比。这可以通过以下方式实现:

percentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);

将另一个 div 的高度和偏移量乘以该百分比可确保按比例滚动。

2. Firefox 中的滚动不太流畅

为了防止 Firefox 中的滚动事件无限循环,请考虑暂时解除监听器绑定:

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);
    setTimeout(function(){ $other.on('scroll', sync ); }, 10);
}
$divs.on( 'scroll', sync);

此解决方案在调整之前断开监听器scrollTop,在短暂延迟后重新绑定它,并确保在 Firefox 中平滑滚动。

要演示此解决方案,请查看交互式 JSFiddle:http://jsfiddle.net/b75KZ/5/

以上是如何使用 jQuery 实现两个 Div 之间平滑同步的滚动?的详细内容。更多信息请关注PHP中文网其他相关文章!

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