推荐使用 wheel 事件的 deltaY 属性判断鼠标滚轮方向:deltaY > 0 表示向下滚动,deltaY < 0 表示向上滚动;wheel 是 W3C 标准事件,兼容性好且跨浏览器一致。

在 JavaScript 中,获取鼠标滚轮滚动方向主要依靠 wheel 事件的 deltaY 属性(推荐)或兼容旧版的 mousewheel 事件的 wheelDelta 属性。现代标准统一使用 wheel 事件,更可靠、跨浏览器一致。
用 wheel 事件判断滚动方向(推荐)
wheel 是 W3C 标准事件,所有现代浏览器都支持。其核心是通过 event.deltaY 的正负值判断方向:
- deltaY > 0:向下滚动(页面内容向上移动,即“往更远内容”滚)
- deltaY :向上滚动(页面内容向下移动,即“往顶部”滚)
- 注意:
deltaY是设备无关的逻辑像素值,可能为小数,不建议直接比大小,用符号判断即可
兼容老版本 IE 的写法(仅必要时)
IE9–11 支持 mousewheel 事件,用 event.wheelDelta 判断:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- wheelDelta > 0:向上滚动
- wheelDelta :向下滚动
- 注意:
wheelDelta的符号与deltaY相反,且值通常是 ±120 的倍数 - 实际项目中,除非明确需支持 IE11 及以下,否则无需处理该事件
监听并响应滚动方向的实用代码
推荐只监听 wheel,简洁健壮:
立即学习“Java免费学习笔记(深入)”;
element.addEventListener('wheel', function (e) {
if (e.deltaY > 0) {
console.log('向下滚动');
} else if (e.deltaY < 0) {
console.log('向上滚动');
}
// 阻止默认行为(如页面滚动)可选:e.preventDefault();
});
如果需兼容极老环境,可用特征检测合并两种事件,但绝大多数场景只需 wheel。
避免常见误区
- 不要依赖
deltaX判断垂直方向——它反映水平滚动,多数鼠标滚轮不触发它 - 不要用
Math.abs(deltaY) > 1等阈值过滤“微小滚动”——方向判断只看符号,精度由浏览器决定 - Mac 触控板可能触发高频率、小增量的
wheel事件,但deltaY符号依然准确

















