読者です 読者をやめる 読者になる 読者になる

加速スクロールをユーザースクリプトでやってみた

UserScripts

ChromeマウスジェスチャーExtensionで実験的に実装してみたやつが意外と面白かったので、少し手を入れてFirefox, Opera用にユーザースクリプトにしてみました。このスクリプトも実験的なものなので、その点はご了承ください。
Scroll Acceleration for Greasemonkey
(Operaで使う場合はファイル名を.user.jsではなく.jsで保存推奨です)

これはいわゆる加速スクロールってやつで、マウスホイールを素早く動かすと、速く動かした分だけたくさんスクロールするという代物です。
マウス自体や、マウスジェスチャーソフト(かざぐるマウスとか)にそういう機能があるみたいで、それをJavaScriptで実現してみました。
ちなみになぜ実験的なのかというと、こういう制御はユーザースクリプトのようなレイヤーではなく、OS寄りのところで実装するべきだと思うからです。

仕組みは単純で、前回のスクロールイベントの発生時刻が近いほど素早く回転していると判定しています。*1
あと、おまけでスムーズスクロールもできるのと、LDRみたいなページ内のスクロールバーでもちゃんと動くのがちょっと頑張ったところです。
「スムーズスクロールはオフが当たり前」って方も多いと思いますが、気持ちスムーズにしておくと目に優しい気がする(言われてみればそんな気がしてくるものです)のでオススメです。ゆっくり着地するように止まるのがポイントです。

*1:余談:この記事を書いてたら、わざわざnew DateしなくてもイベントのtimeStampでそのイベントの発生時刻が取れるのを思い出した。後で直そう。