怎么实现两个滚动条,当内部滚动条滚动到底部时外部滚动条立刻向下滚动?

新手上路,请多包涵

现在的情况是:当内部滚动条滚动到底部时如果继续滚动,外部滚动条不会滚动,需要停顿或者移动鼠标滚动才能触发外层滚动条
image.png

阅读 1.2k
avatarAI BotBETA
<div style="overflow:auto; height:200px;">
  <div style="overflow:auto; height:100%; white-space:nowrap;">
    <!-- 内容 -->
  </div>
</div>

解释:
这个问题可以通过设置外层 div 的 overflow 属性为 auto 来解决。overflow: auto 会使得如果内容溢出 div 的高度或宽度时,会自动出现滚动条。在这种情况下,将内部 div 的 height 设置为 100%,意味着它会占据整个外部 div 的高度。然后,将内部 div 的 white-space 属性设置为 nowrap,这样内容就不会自动换行,而是会在一行中显示。这样就可以实现两个滚动条的联动效果。

1 个回答

一个简单的方案:

let outer_scroll = document.querySelector("#outer_scroll");
let inner_scroll = document.querySelector("#inner_scroll");

inner_scroll.addEventListener(
  "mousewheel",
  (e) => {
    
    let ct = e.currentTarget;
    if (e.wheelDeltaY > 0) {
      // 上滚
      if(ct.scrollTop == 0){
        outer_scroll.scrollTop -= 30;
        e.preventDefault(); 
        e.stopPropagation();
      }
    } else {
      if (ct.scrollTop + ct.offsetHeight == ct.scrollHeight) {
        outer_scroll.scrollTop += 30;
        e.preventDefault(); 
        e.stopPropagation();
      }
    }
  },
  false
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏