Element:滚轮事件

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

滚轮wheel)事件会在滚动鼠标滚轮或操作其他类似输入设备时触发。

滚轮事件取代了已被弃用的非标准 mousewheel 事件。

备注: 不要将滚轮事件与 scroll 事件混淆。滚轮事件的默认行为是取决于实现的,所以不一定会触发 scroll 事件。即便如此,滚轮事件的 delta* 值也不一定能反映文档内容的实际滚动方向。因此,请不要依赖滚轮事件的 delta* 值来获得滚动方向。请通过检测目标的 scroll 事件的 scrollLeftscrollTop 这两个值代替。

语法

addEventListener() 方法中使用事件名称,或设置事件处理器属性。

js
addEventListener("wheel", (event) => {});

onwheel = (event) => {};

事件类型

事件属性

此接口从父接口:MouseEventUIEventEvent 继承属性。

WheelEvent.deltaX 只读

返回一个浮点数(double),表示水平方向的滚动量。

WheelEvent.deltaY 只读

返回一个浮点数(double),表示垂直方向的滚动量。

WheelEvent.deltaZ 只读

返回一个浮点数(double)表示 z 轴方向的滚动量。

WheelEvent.deltaMode 只读

返回一个无符号长整型数(unsigned long),表示 delta* 值滚动量的单位。允许的值为:

常量 描述
WheelEvent.DOM_DELTA_PIXEL 0x00 delta* 值以像素为单位。
WheelEvent.DOM_DELTA_LINE 0x01 delta* 值以行为单位。每次鼠标单击都会滚动一行内容,其中行高计算的方法取决于浏览器。
WheelEvent.DOM_DELTA_PAGE 0x02 delta* 值以页为单位。每次鼠标单击都会滚动一页内容。
WheelEvent.wheelDelta 只读 已弃用

返回一个(32 位)整型数,表示像素距离。

WheelEvent.wheelDeltaX 只读 已弃用

返回一个整型数,表示水平滚动量。

WheelEvent.wheelDeltaY 只读 已弃用

返回一个整型数,表示垂直滚动量。

示例

通过滚轮缩放元素

此示例展示了如何使用鼠标(或其他定点设备)滚轮缩放元素。

html
<div>使用鼠标滚轮来进行缩放</div>
css
body {
  min-height: 100vh;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

div {
  width: 105px;
  height: 105px;
  background: #cdf;
  padding: 5px;
}
js
function zoom(event) {
  event.preventDefault();

  scale += event.deltaY * -0.01;

  // Restrict scale
  scale = Math.min(Math.max(0.125, scale), 4);

  // Apply scale transform
  el.style.transform = `scale(${scale})`;
}

let scale = 1;
const el = document.querySelector("div");
el.onwheel = zoom;

使用 addEventListener 的等价形式

上面的事件处理器也可以通过 addEventListener() 方法来设置:

js
el.addEventListener("wheel", zoom, { passive: false });

规范

Specification
UI Events
# event-type-wheel
HTML
# handler-onwheel

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
wheel event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

参见