jQuery・タッチデバイスでも滑らかなスムーススクロールを作りました [IE8対応]
2016/07/08 jQuery 2.2 対応に修正しました。
クライアントから「スマホでスムーススクロールがカクつくの、何とかなりません?」とご要望を頂いたため、Velocity.js を利用して作成。
検証済みブラウザとOS
- IE 8~
- Firefox
- Google Chrome
- Safari
- Windows 7
- OS X Yosemite
- iOS 8
- Android 4.1
要点とコード
- よくあるコードを、Velocity.js 用に書き換えただけ
- ページトップは、a グではなく id 指定にしている
1 2 3 | <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="//cdn.jsdelivr.net/velocity/1.2.2/velocity.min.js"></script> <script src="js/smoothScroll.js"></script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <body> <nav> <ul> <li><a href="#block-01"><i class="fa fa-hand-o-down"></i> メニュー01</a></li> <li><a href="#block-02"><i class="fa fa-hand-o-down"></i> メニュー02</a></li> <li><a href="#block-03"><i class="fa fa-hand-o-down"></i> メニュー03</a></li> </ul> </nav> <h1 id="block-01">この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</h1> <img src="//placeimg.com/640/480/any"> <p>テキスト</p> <h1 id="block-02">親譲りの無鉄砲で小供の時から損ばかりしている</h1> <p>テキスト</p> <h1 id="block-03">つれづれなるまゝに、日暮らし</h1> <img src="//placeimg.com/640/480/any"> <p>テキスト</p> <h1>Lorem ipsum dolor sit amet</h1> <p>テキスト</p> <span id="pagetop"> <i class="fa fa-hand-o-up"></i> </span> </body> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #pagetop { color: white; @include fs(24); cursor: pointer; position: fixed; right: 40px; bottom: 40px; padding: 15px 20px; background: #666; &:hover { @include opacity(0.7); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /* Smooth scroll with Velocity.js Author: KEITA HIRAI URL: keitahirai.net */ $(function() { // アンカーリンク $('a[href^="#"]').click(function() { var link = $(this).attr("href"), target = $(link === "#" || link === "" ? "html" : link); target.velocity("scroll", { duration: 400, easing: "ease-out" }); return false; }); // pagetop $("#pagetop").click(function() { $("body").velocity("scroll", { duration: 400, easing: "ease-out" }); }); }); |
カスタマイズ
- #pagetop ではなく a タグにしたい
- jQueryの該当コードをコメントアウトして、普通にリンクを設置すればOK。123<span id="pagetop"><a href="#"><i class="fa fa-hand-o-up"></i></a></span>
問題点
- iPod touch 第5世代で引っかかりが発生する
- 既にレンダリングはAndroidに負けているのでしょうがない。iPad は問題なし。
コメントを投稿する