開発でマウスホイールの上下スクロールによって画面上のある要素(たとえDIV)をスクロールさせることが遇いました。
インタネットにはたくさんのサンプルがあるけど、だいぶは曖昧し過ぎ、結局どれでも僕のニーズに合わなかった。ここで自分の対策をメモする。
ニーズ:ページ上のある要素(ここではid="testId"の要素)に、マウスホイールが上下スクロールしたとき、要素のコンテンツを左右スクロールさせ、表示する
いきなり、コードの抜粋:
/***************************************************************************
* (横)カレンダーにおけるマウスホイール処理(カレンダー左右移動)
**************************************************************************/
var mevt = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel"; // FF doesn't recognize mousewheel as of FF3.x
// スクロールさせたい要素のIDにイベントを付ける
$("#testId").bind(mevt,function(e) {
// 左右移動単位(px)
var stepLen = 28;
// マウスの上下スクロール判断
var delta = e.originalEvent.deltaY ? -(e.originalEvent.deltaY) : e.originalEvent.wheelDelta ? e.originalEvent.wheelDelta : -(e.originalEvent.detail);
if (delta > 0) {
// 要素が上に28pxを移動させる
this.scrollLeft -= (28);
} else {
// 要素が下に28pxを移動させる
this.scrollLeft += (28);
}
// 従来なイベントを阻止する
mevt.preventDefault();
});
以上、ページ上のある要素(id="testId")に、マウスホイールを上下スクロールする際に、当該要素を左右スクロールさせるようにできた。
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…