为了账号安全,请及时绑定邮箱和手机立即绑定

如何同步两个div的滚动位置?

如何同步两个div的滚动位置?

波斯汪 2019-11-12 14:59:29
我想将2个div的大小设置为特定的宽度(即500px)。一个在另一个之上水平排列。顶部框应隐藏其滚动条,底部框应显示滚动条,并且当用户滚动时,我希望顶部框的偏移量更改为底部框的值。因此,当底部DIV水平滚动时,似乎顶部DIV也同时滚动。我很高兴在Jquery中做到这一点,如果它使过程更容易。
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我知道这是一个旧线程,但这也许会对某人有所帮助。如果需要同步双向滚动,仅处理两个容器的滚动事件并设置滚动值是不够的,因为这样滚动事件进入了循环并且滚动不流畅(尝试垂直滚动)。鼠标滚轮,Hightom提供的示例)。


这是如何检查是否已经同步滚动的示例:


var isSyncingLeftScroll = false;

var isSyncingRightScroll = false;

var leftDiv = document.getElementById('left');

var rightDiv = document.getElementById('right');


leftDiv.onscroll = function() {

  if (!isSyncingLeftScroll) {

    isSyncingRightScroll = true;

    rightDiv.scrollTop = this.scrollTop;

  }

  isSyncingLeftScroll = false;

}


rightDiv.onscroll = function() {

  if (!isSyncingRightScroll) {

    isSyncingLeftScroll = true;

    leftDiv.scrollTop = this.scrollTop;

  }

  isSyncingRightScroll = false;

}

.container {

  width: 200px;

  height: 500px;

  overflow-y: auto;

}


.leftContainer {

  float: left;

}


.rightContainer {

  float: right;

}

<div id="left" class="container leftContainer">

Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur? At vero eos et accusamus et iusto odio dignissimos ducimus, qui blanditiis praesentium voluptatum deleniti atque corrupti, quos dolores et quas molestias excepturi sint, obcaecati cupiditate non provident, similique sunt in culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio, cumque nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet, ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

</div>

<div id="right" class="container rightContainer">

Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur? At vero eos et accusamus et iusto odio dignissimos ducimus, qui blanditiis praesentium voluptatum deleniti atque corrupti, quos dolores et quas molestias excepturi sint, obcaecati cupiditate non provident, similique sunt in culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio, cumque nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet, ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

</div>


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 871 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信