首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在禁用和重新启用卷轴后停止Webkit本机滚动动量

如何在禁用和重新启用卷轴后停止Webkit本机滚动动量
EN

Stack Overflow用户
提问于 2021-08-03 08:51:29
回答 1查看 161关注 0票数 0

我有一个棘手的问题,Webkit浏览器和一些自定义滚动行为。

在我的页面上,我正在检测滚动,当它发生时,通过使bodyoverflow:hidden来禁用滚动,然后为滚动位置执行一些自定义动画逻辑。

Webkit浏览器(Mac )上的问题是,当我重新启用滚动时,本机滚动看起来仍然很轻松,从而使页面更多地朝着初始滚动事件的方向移动,这在本例中是不可取的。

是否有禁用/重置本机滚动或本机滚动动量的方法?

下面是一个说明这个问题的码页。但是,您需要以zip的形式下载它并在本地运行--无论对预览容器做什么,都可以防止导致问题的“本机”滚动。当在本地查看并滚动“向下”时,您应该看到:

  • Firefox (所需的行为):对于25帧后的滚动,滚动位置不应该移动,页面的背景应该是米色。只有当再次滚动时,才能使页面再次动画。
  • Webkit:在完成滚动后的25帧后,当动画超时结束时,您将看到页面闪烁为白色,而没有重新滚动“旧的”本地滚动放松似乎仍在“向下倾斜”,这将触发滚动事件,并立即重新绘制页面背景米色。我想避免这个“旧的本地滚动”触发后,我重新启用滚动。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-09 11:51:10

解决方案是使用与body不同的元素作为滚动包装器。显然,当将身体重新格式化为可滚动(有溢出)时,这种“恢复”动量滚动的行为是硬编码的,而其他可滚动的元素则不会出现这种不可预测的副作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68633003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档