Home > jQuery > jQueryでページ内スムーズスクロール

jQueryでページ内スムーズスクロール

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加

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で動作確認しましたが、動いているようなのでひとまずよしとしておきましょう…。

では今回はこのへんで。

iiyama 19型ワイド液晶ディスプレイ ProLite E1902WS-B1(ブラック) PLE1902WS-B1

iiyama 19型ワイド液晶ディスプレイ ProLite E1902WS-B1(ブラック) PLE1902WS-B1

定価:¥ 39,800

カテゴリ:エレクトロニクス

発売日:2007-10-31


Westinghouse 22インチワイドモニター 液晶モニター ブラック L2210NW

Westinghouse 22インチワイドモニター 液晶モニター ブラック L2210NW

定価:¥ 39,800

カテゴリ:エレクトロニクス

発売日:2008-03-10


 

Comments:2

cyokodog 08-12-24 (水) 10:10

animate({scrollTo:xxx}) で簡単にスムーズスクロールが実現できるようです。また、easingの追加も容易にできるようです。
http://d.hatena.ne.jp/dayflower/20081007/1223358033
http://bizcaz.com/archives/2008/12/23-133748.php (要ソース参照)
http://dev.jquery.com/~john/ticket/step/test2.html (要ソース参照)

DETELU 08-12-24 (水) 11:30

cyokodogさま、情報ありがとうございます。
やっぱりanimate({scrollTo:xxx})だけでOKなんですね。
ちなみにサンプルで掲載しているものは「外部リンクへの誤動作防止」と「ページ下の位置に移動させる」ために、ごちゃごちゃとifをつけたり、target.offset()で位置を取得したりしています。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.detelu.com/wordpress2/wp-trackback.php?p=152
Listed below are links to weblogs that reference
jQueryでページ内スムーズスクロール from 1:n - DETELU Blog

Home > jQuery > jQueryでページ内スムーズスクロール

Search
Feeds
おすすめITEM
TRION 横型ビジネスバッグ
税込 26,250 円
ロリポップ!

Return to page top