図書館
タッチライブラリのいずれかを選択します。
iScroll by Matteo Spinelli
ジョー・ヒューイットによるスクロール可能性
ZyngaによるZynga Scroller
Modernizrを接続します
ラッパー
iScrollで選択した場合は、#wrapperブロックと#scrollerブロック内にコンテンツを配置する必要があります
<div id="wrapper"> <div id="scroller"> <ul> <li>...</li> </ul> </div> </div>
Modernizrを使用してタッチデバイスを定義し、そのデバイス用の新しいiScrollインスタンスを作成します
var myScroller = Modernizr.touch ? new iScroll('scroller') : null;
スタイルを追加する
#wrapper { overflow: auto; } /* #wrapper - */ /* head.touch Modernizer' - */ .touch #wrapper { overflow: hidden; }
スクロール位置を正規化する関数
function getScroll(elem, iscroll) { var x, y; if (Modernizr.touch && iscroll) { x = iscroll.x * -1; y = iscroll.y * -1; } else { x = elem.scrollLeft; y = elem.scrollTop; } return {x: x, y: y}; }
最後のタッチ
var myScroller = Modernizr.touch ? new iScroll('scroller') : null; (function animationLoop(){ window.requestAnimationFrame(animationLoop); var scroll = getScroll(window, myScroller); // scroll.x; scroll.y; })();
アニメーションにrequestAnimationFrameを使用する理由