【发布时间】:2021-09-21 21:34:47
【问题描述】:
我正在尝试创建以下滚动行为(在 React 中):滚轮的每个单独的“滴答”以 100 像素的倍数滚动(跨浏览器/操作系统)。
我的做法:向列表框添加滚动事件处理程序以滚动 100 像素。
我使用了onWheel 和Element.scrollBy():
onWheel={(event) => {
event.currentTarget.scrollBy({
top: Math.sign(event.deltaY) * 100, // 100 pixels in the right direction
behavior: 'smooth',
});
}}
https://codesandbox.io/s/modest-lichterman-3iu0r
有两个问题:
- 用户滚动和 JavaScript 滚动都执行,并且尝试阻止事件的默认设置不起作用。
-
behavior: 'smooth'动画使尝试快速滚动变得极其缓慢。我找不到如何更改动画的持续时间。
我找到了this Stack Overflow 问题(以及几个类似的问题),但我不确定如何将答案应用于此问题。
谢谢!
【问题讨论】:
标签: javascript reactjs scroll event-handling frontend