wheelイベントが返すdeltaY値のブラウザ別挙動


wheel イベントが返す event.deltaY の値が、ブラウザによって割と異なっていたという話です。

el.addEventListener('wheel', function(event) {
  console.log(event.deltaY);  // この値
});

実際に手動で心をこめて動かした結果を元にしており、何か間違っていたらすみません。

Chrome

  • 値は必ず 0 から始まり、0 で終了する
  • e.g. [0, 1, 3, 5, 7, 8, 6, 0]
  • スクロール方向に可動幅がない場合も、ホイールに掛かった慣性通りにイベントが発火する

IE10, IE11

  • 値は必ず 0 以外から始まり、0 以外で終了する
  • 値には小数点以下が含まれる
  • e.g. [1.11, 3.33, 5.55, 7.77, 8.88, 6.66]
  • スクロール方向に可動幅がない場合も、ホイールに掛かった慣性通りにイベントが発火する(Chromeと同じ)
  • 下スクロールを行った時に、数値にマイナス(=本来と逆の値)が含まれることがある
    • 上方向は試してないけど、多分発生するのではないか

Safari

  • 値は必ず 0 以外から始まり、0 以外で終了する
  • e.g. [1, 3, 5, 7, 8, 6]
  • スクロール方向に可動幅がない場合は、1イベントしか発火しない

Firefox

担当サービスでシェアが5%くらいだったので調べませんでした