当前位置: 首页 > 知识库问答 >
问题:

javascript - 在Web开发中解决内外层滚动冲突的方法?

傅旺
2024-04-12

怎么处理内外层滚动?

需求是这样的,外层outter是可滚动的,然后中间有一段inner也是可滚动的,关系如下图
image.png
希望的操作是黄色范围完整出现在绿色范围后开始滚动蓝色范围,蓝色滚动到底后继续滚动红色范围
我试过js控制overflow:hidden和auto切换,可是会导致滚动中断
大佬有什么好的建议么

共有1个答案

宰父冠玉
2024-04-12

处理Web开发中内外层滚动冲突的问题,一个常见的解决方案是使用JavaScript来监听内层滚动事件,并在滚动到底部或顶部时阻止其继续滚动,转而让外层滚动。以下是一个基本的示例代码,用于实现你描述的需求:

// 假设 outerDiv 和 innerDiv 分别是外层和内层滚动的DOM元素const outerDiv = document.getElementById('outerDiv');const innerDiv = document.getElementById('innerDiv');// 监听内层滚动事件innerDiv.addEventListener('scroll', function(e) {  // 获取内层滚动的当前位置  const scrollTop = innerDiv.scrollTop;  const scrollHeight = innerDiv.scrollHeight;  const clientHeight = innerDiv.clientHeight;  // 判断是否滚动到底部  if (scrollTop + clientHeight >= scrollHeight) {    // 阻止内层继续滚动    e.preventDefault();        // 开始外层滚动    outerDiv.scrollTop += 1; // 这里可以根据需要调整滚动的量  }  // 判断是否滚动到顶部  if (scrollTop <= 0) {    // 阻止内层继续滚动    e.preventDefault();        // 开始外层滚动    outerDiv.scrollTop -= 1; // 这里可以根据需要调整滚动的量  }});

这段代码通过监听内层滚动事件,并在滚动到顶部或底部时阻止其继续滚动,转而让外层滚动。你可以根据自己的需求调整滚动的量和方向。

请注意,这只是一个基本的示例代码,实际使用时可能需要进行一些调整和优化,以适应具体的项目需求。此外,还可以考虑使用第三方库,如perfect-scrollbar等,它们提供了更丰富的滚动控制和自定义选项,可以更方便地解决内外层滚动冲突的问题。

 类似资料:
  • 本文向大家介绍Android listview的滑动冲突解决方法,包括了Android listview的滑动冲突解决方法的使用技巧和注意事项,需要的朋友参考一下 Android listview的滑动冲突解决方法 在Android开发的过程中,有时候会遇到子控件和父控件都要滑动的情况,尤其是当子控件为listview的时候。就比如在一个ScrollView里有一个listview,这种情况较常见

  • 本文向大家介绍完美解决EditText和ScrollView的滚动冲突(上),包括了完美解决EditText和ScrollView的滚动冲突(上)的使用技巧和注意事项,需要的朋友参考一下 在网上搜了一下EditText和ScrollView的滚动冲突,发现几乎所有的解决方案都是触摸EditText的时候就将事件交由EditText处理,否则才将事件交由ScrollView处理。这样确实初步解决了两

  • 本文向大家介绍完美解决EditText和ScrollView的滚动冲突(下),包括了完美解决EditText和ScrollView的滚动冲突(下)的使用技巧和注意事项,需要的朋友参考一下 上篇文章完美解决EditText和ScrollView的滚动冲突(上)中提到咱们自己写了一个判断EditText是否可以在垂直方向上滚动的方法,那么这个方法是如何得来的呢? 其实Android API里是有一个判

  • 本文向大家介绍Android滑动事件冲突的解决方法,包括了Android滑动事件冲突的解决方法的使用技巧和注意事项,需要的朋友参考一下 滑动是Android中不可缺少的一部分,多个滑动必然会产生冲突,比如我们最常见的是ScrollView中嵌套了ListView,一般做法是计算出ListView的总高度,这样就不用去滑动ListView了。又比如一个ViewPager嵌套Fragment,Frag

  • Windows 用tutorial进行的操作 若要进行pull操作,请右击tutorial目录,并选择‘拉取’。 用tutorial进行的操作 在以下画面点击‘确定’。 用tutorial进行的操作 我们看到画面上的警告信息表示自动合并失败。请点击‘关闭’以退出窗口。 用tutorial进行的操作 若您确认变更,请点击‘Yes’。 用tutorial进行的操作 TortoiseGit告诉我们:因"

  • 在上一个页面我们提及到,执行合并即可自动合并Git修改的部分。但是,也存在无法自动合并的情况。 如果远程数据库和本地数据库的同一个地方都发生了修改的情况下,因为无法自动判断要选用哪一个修改,所以就会发生冲突。 Git会在发生冲突的地方修改文件的内容,如下图。所以我们需要手动修正冲突。 ==分割线上方是本地数据库的内容, 下方是远程数据库的编辑内容。 如下图所示,修正所有冲突的地方之后,执行提交。