JavaScriptでスムーズスクロールを実装する
公開日:2014年3月3日
最終更新日:2014年3月6日
ページ内リンクでページトップに戻る時に、スクロールがなめらかだとユーザーが違うページにジャンプしたと勘違いしなくてすみます。
このスムーズスクロールをJavaScriptで実装する方法を紹介します。
jQueryを使う方法
jQueryを他にも使っているなら、animate()を使ってスムーズスクロールが実装できます。
【記事執筆時の確認環境】
jQuery 1.11.0
以下はそのコードですが、#で始まるアンカーをクリックした時に動作するようになっています。
1 2 3 4 5 6 7 8 9 10 |
jQuery(function(){ $('a[href^=#]').click(function() { var speed = 400;//スクロール速度 単位:ミリ秒 var href= $(this).attr("href"); var destination = $(href == "#" || href == "" ? 'html' : href); var position = destination.offset().top; $("html,body").animate({scrollTop:position}, speed, 'swing'); return false; }); }); |
JavaScriptのメソッドだけを使う方法
jQueryを使わず、JavaScriptのメソッドだけを使う方法です。
以下のコードを記述したjsファイルをインクルードします。
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 |
var up_timer; function getPosition(){ horizontal = document.body.scrollLeft || document.documentElement.scrollLeft; vertical = document.body.scrollTop || document.documentElement.scrollTop; } function pageup(x,y){ if (up_timer) { clearTimeout(up_timer); } if (y >= 1) { getPosition(); var divisionY = (vertical-(vertical/7)); var Y = Math.floor(divisionY); window.scrollTo(horizontal,Y); up_timer = setTimeout("pageup("+horizontal+","+Y+")",10); } else { window.scrollTo(horizontal,0); clearTimeout(up_timer); } } function scrollup(){ getPosition(); pageup(horizontal,vertical); } |
HTMLのリンクコードは以下のように記述します。
1 |
<a onclick="scrollup(); return false;" href="#container">ページの先頭へ</a> |
スポンサーリンク