jQueryでページ内スムーズスクロール
jQueryでページ内リンクをスムーズに移動(ページトップへ等)するものを作ろうと思いいろいろ調べていたら、いいページを見つけたので早速試してみました。
We Ain’t Seen Nothin’ Yet. : [Rails meets jQuery] jQueryで作るページ内目次とスムーススクロール
上記の記事では「Interface.js」を利用しているようなのですが、動作させるコードを読んでいるとInterface.jsをどこで使っているかわからなかったので、jQueryだけで動作確認すると、とりあへず動きました。jQueryの古いバージョンでは「scrollTop」がjQuery自体に含まれていなかったのかもしれませんが、最近jQueryをいじり始めたため詳しいことはわかりません…。
ということでコードはほぼそのまま利用させていただき、スクロール動作だけを変更しています。
使用ファイルは「jquery-1.2.6.min.js」と「jquery.easing.1.3.js」を利用しています。
使用ライブラリ・プラグインダウンロード先
Downloading jQuery – jQuery JavaScript Library(jquery-1.2.6.min.js)
jQuery Easing Plugin(jquery.easing.1.3.js)
サンプル
jQueryでページ内スムーズスクロール サンプル
Javascritp部分
$(function() { $('a[href*=#]').click(function() { if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { var target = $(this.hash); target = target.length && target; if (target.length) { var sclpos = 30; var scldurat = 1200; var targetOffset = target.offset().top - sclpos; $('html,body') .animate({scrollTop: targetOffset}, {duration: scldurat, easing: "easeOutExpo"}); return false; } } }); });
「var sclpos = 50」で止まる位置にどれぐらい「上に隙間」をあけるか位置を調節できます。「0」を指定すればぴったりの位置、50を指定すると50px余裕を持った位置で停止します。
「var scldurat = 1200」で移動スピードを調節できます。大きい数字ほどゆっくりスクロールします。
HTML部分
… 省略 … <div id="top"> <h1>jQueryでページ内スムーズスクロール</h2> <a href="#no1">タイトル1</a> | <a href="#no2">タイトル2</a> | <a href="#no3">タイトル3</a> | <a href="#no4">タイトル4</a> </div> <div id="box1"> <h2 id="no1">タイトル1</h2> … 省略 … <a href="#top">ページトップへ</a>
リンクに移動先に割り当てたID名を記述するだけです。
ちょこちょこっとMac・Winで動作確認しましたが、動いているようなのでひとまずよしとしておきましょう…。
では今回はこのへんで。