jQuery mousewheel事件的原生JavaScript等价实现方法
问题场景
在页面中使用mousewheel / wheel事件实现页面缩放功能时,不同事件绑定方式的表现存在明显差异:
- 通过jQuery的
el.on("mousewheel DOMMouseScroll", functionName)方式绑定处理函数时,运行流畅、功能正常,event.delta的返回值始终稳定一致。 - 换用原生API
el.addEventListener("wheel", functionName)绑定同一个处理函数时,滚动效果异常:事件触发不稳定,event.deltaY的取值符号随机,与滚轮实际滚动方向无关联。
核心诉求:无需加载整个jQuery库,实现和jQuery鼠标滚轮事件一致的平滑效果,找到对应的等价实现方案。
解决方案
卡顿、方向错乱的问题并非由事件本身导致,根源是取值时选错了事件属性:JavaScript原生滚轮事件的event.wheelDeltaY属性,就是jQuery中event.delta的等价属性,直接使用该属性取值,即可获得和jQuery绑定方式完全一致的稳定效果。
该属性的具体定义可查阅WheelEvent官方文档,感谢@CBroe提供的解答思路。
内容的提问来源于stack exchange,提问作者Athene Noctua
相关产品推荐
相关产品推荐

