LoginSignup
19
18

More than 5 years have passed since last update.

Webアプリ内で慣性スクロールを実装する

Posted at

最近iOSネイティブ開発の機会が減ってネタがないのでWebアプリネタを透過します。あくまでhtmlの話です。

WebKitのスクロール減速速度

UIScrollView#decelerationRate の UIScrollViewDecelerationRateFastと同じ減速速度で、ヌルヌル感がないやや強い設定になっています。
ネイティブで実装する場合はdecelerationRate値を変更するだけなのですが、WebアプリやハイブリッドアプリなどでViewをHTMLで作成した場合はhtmlに細工を施す必要があります。

実現方法

div内のoverflowスクロールを利用する

-webkit-overflow-scrollingというベンダープリフィックスプロパティが存在するのでこれをtouchに設定し、divからはみ出た部分をscrollに設定します。
それからスクロール範囲であるdiv自体の高さを適切に調整します。

sample.css
div.fast-scroll {
  -webkit-overflow-scrolling: touch;
  overflow: scroll;
  height: 100%;
}

注意点

WebKit自体はスクロールしないためwindow.onscrollイベントが発生しませんので、これを利用した外部ライブラリは一切使えなくなる可能性があります。
利用には十分ご注意ください。

Android端末での利用

Android4以上の機種でも、-webkit-overflow-scrollingが使用可能なようですがスクロールのパフォーマンスが劣化する可能性があります。また端末によっては十分にスクロール減速速度は緩やかなので対応機種によっては設定しない方がいいかもしれません。

Demo

対象端末のブラウザからアクセスしてください。

慣性スクロール有り
慣性スクロール無し(標準)

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18