Element: mousewheel イベント

非推奨: この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

非標準: この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

古い標準外の mousewheel イベントは、このイベントは Element で非同期に発生し、マウスホイールまたは類似の機器を操作している間の更新を提供します。mousewheel イベントはどの標準にも含まれておらず、いくつかのブラウザーで実装されていましたが、Firefox で実装されることはありませんでした。

メモ: この古いイベントの代わりに、標準の wheel イベントを使用してください。

構文

このイベント名を addEventListener() 等のメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。

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

onmousewheel = (event) => {};

イベント型

イベントプロパティ

このインターフェイスには、祖先である MouseEvent, UIEvent, Event から継承したプロパティがあります。

WheelEvent.deltaX 読取専用

水平スクロール量を表す double を返します。

WheelEvent.deltaY 読取専用

垂直方向のスクロール量を表す double を返します。

WheelEvent.deltaZ 読取専用

z 軸のスクロール量を表す double を返します。

WheelEvent.deltaMode 読取専用

delta* 値のスクロール量の単位を表す unsigned long を返します。指定可能な値は次の通りです。

定数 説明
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 読取専用 非推奨

垂直スクロール量を表す整数を返します。

detail プロパティ

detail プロパティの値は常にゼロです。ただし、Opera では detail は Firefox 専用の DOMMouseScroll イベントの detail 値はスクロール距離を行単位で示し、負の値はスクロール移動が下方向または右方向であることを示し、正の値は上方向または左方向であることを示します。

メモ: macOS では、スクロール距離(したがって detail の値)は加速スクロール距離に基づいて計算されます。

Linux では、2 または -2 がネイティブのホイールイベントごとに設定されます。

wheelDelta, wheelDeltaX, wheelDeltaY の値

wheelDelta 属性の値は、ホイールがどれだけ回転したかを示す抽象的な値です。ホイールがユーザーから離れる方向に回転した場合は正の値、そうでない場合は負の値となります。これはデルタ値の符号が DOM Level 3 Event の wheel と異なることを意味しています。しかし、これらの値の量の意味はブラウザー間で同じではありません。詳しくは以下の説明を参照してください。

IE と Opera (Presto) は wheelDelta 属性にのみ対応しており、水平スクロールには対応していません。

wheelDeltaX 属性値は、横軸に沿った wheelDelta 属性値を示します。ユーザーが右にスクロールする機器を運営する場合、値は負になります。そうでない場合、つまり左にスクロールする場合、値は正の値になります。

wheelDeltaY 属性値は縦軸の wheelDelta 属性値を示します。値の符号は wheelDelta 属性値と同じです。

Chrome

Windows では WM_MOUSEWHEEL または WM_MOUSEHWHEEL の差分値と同じになります。また、システム設定のスクロール量がページスクロールであっても値は変わりません。

Linux の場合、値はネイティブホイールイベントごとに 120 または -120 です。これは Windows の IE や Chrome と同じ動作になります。

Macの場合、値は複雑です。ネイティブホイールイベントを発生させる機器が連続スクロールに対応している場合、値が変更されます。

連続スクロールに対応している機器(MacBook のトラックパッドや滑らかに回転するマウスホイールなど)の場合は、加速スクロール量から値が計算されます。この場合、値は Safari と同じです。

機器が連続スクロールに対応していない場合(典型的な例として、スムーズに回転させることができない古いマウスホイール)、値は非加速スクロール量(1 ノッチあたり 120)から計算されます。この場合、値は Safari とは異なります。

この違いはウェブアプリケーションの開発者にとって深刻な課題となります。つまり、ウェブ開発者は mousewheel イベントがどの機器によって発生させられたのかを知ることができません。

Safari

値は常に加速スクロール量から計算されます。これは、連続スクロールに対応している Chrome 以外のブラウザーとは実に異なります。

Opera (Presto)

値は常に detail 属性の値 ✕ 40 です。

Windows では、detail 属性の値は実際のスクロール量から計算されるため、システム設定やページで 1 ノッチあたりのスクロール量が 3 行になる以外は、他のブラウザーとは値が異なります。

Linuxでは、値はネイティブホイールイベントごとに 80 または -80 です。これは他のブラウザーとは異なります。

Mac では、detail 属性の値はネイティブイベントの加速スクロール量から計算されます。この値は通常、Safari や Chrome の値よりもはるかに大きくなります。

仕様書

どの仕様書にも含まれていません。

ブラウザーの互換性

BCD tables only load in the browser

関連情報

  • 代わりに待ち受けすべき標準の wheel イベント。