ページ内リンクをスマートにするsmoothScroll.js
ページ内リンクをスムーズに行うjsライブラリ、smoothScroll.jsを作成したので公開します。
どういったものかはサンプルで確認してください。
<a href="#header">ページの先頭に戻る</a>
などのページ内リンクをスムーズな移動に変更します。
これにより、エンドユーザーがページが遷移したという錯覚におちいることはありません。
設置方法は簡単です。
smoothScroll.jsをダウンロードして、設置したいページで取りこみます。
<script type="text/javascript" src="./smoothScroll.js"></script>
特定のリンクはスムーズさせない
smoothScroll.jsは#(ハッシュ)付きのリンクを全てスムーズスクリプトに変換します。他のライブラリなどで#付きのリンクを利用していて、そこに関してはスムーズスクリプトに変換したくない場合は次のように記述してください。
<a href="#header" data-tor-smoothScroll="noSmooth">スムーズなし</a>
HTML5のカスタムデータ属性「data-tor-smoothScroll」に対して「noSmooth」を指定することでスムーズを抑制することができます。
HTML5以外で特定のリンクはスムーズさせない
HTML5のカスタムデータ属性を利用したくない場合は、smoothScroll.jsの14行目を次のように変更してください。
var attr ="data-tor-smoothScroll";
↓
var attr ="class";
そうするとclass属性に対して「noSmooth」を指定することでスムーズを抑制することができまるようになります。
MITライセンスで公開しておりますのでご自由にご利用ください。
修正情報
2011/02/13 カスタムデータ属性を利用したスムーズの抑制機能を追加しました。
2010/08/31 Google Chromeで動かない。ページ下部へのスクロールがスムーズではないときがある等のバグを修正しました。
関連エントリー
アルファ画像を扱うalphafilter.jsライブラリ
ie以外でもクリップボードが使えるsetClipboard.js
一番簡単な画像置換の方法-imageReplace.js-
AjaxやJavaScriptのライブラリー
スポンサードリンク
«FeedReaderをFastladderに変更 | メイン | jsライブラリで実装する効率的なWeb制作(Web標準の日々)»
- このエントリーのトラックバックURL
- http://blog.webcreativepark.net/cgi/mt/mt-bt.cgi/182






西畑一馬(



おお、これいいですね
>SEOサプリさん
ありがとうございます。
気になる点などがあったら、ご指摘いただけたらと。
それでは、東京でお会いできるのを楽しみにしてますので
初めまして
このJSとってもクールな動作をしますね!
記事にも書かれているとおり、これさえあれば
ページ内リンクだとしても、ユーザーが違うページに
飛んだと勘違いをする事を防ぐ事が出来ますね
実際、当方もページ内リンクでいきなりカッと飛ぶと
勘違いしてしまう事があります(笑)
ただ、物凄く便利なJSでありがたいのですが
ファイヤーフォックスでは動作しませんでした
改良を色々と試みてみたものの当方、JSの知識が浅いため
なかなか解決できません
どうか解決のヒントをいただけないでしょうか?
よろしくおねがいします
>もすさん
サンプルの方は、ファイヤーフォックスで動きますよね?
設置されたサイトの何かが干渉しているのかも・・・
id属性でのページ内リンクでしょうか?name属性のページ内リンクには対応しておりませんので、その場合はid属性に変更していただけたらと
サンプルもfirefoxでは動作しなかったのですが
なぜか3.0にアップデートすると動くようになりました
firefoxにいろいろアドオンやらテーマやらをつめ過ぎて調子が悪くなっていたのでしょうか・・・
ページ内リンクの設定は最初からidで行っていたため、逆にnameに変えて試したりしたものですが
やはり突然firefoxでも動くようになった事が疑問に残ります
念の為、母親のラップトップにfirefox2.0をインストールして
2.0では動作しないのだったのか試して見ます
干渉についてですが、ほかのJSと変数の名前がかぶっていたりとかはありませんでした
>もすさん
私のFirefox2では動作しているので、なにかアドオンが原因だったのかもしれませんね。
はじめまして
ちょうど探していたjsだったのでかなり感謝いたします^^
いままで『もす』さんと同様に、普通にtopに飛ばしていたので正直「なんかなぁ・・・」とか思ってました。
動作も問題なくいけます。
(火狐の場合ラグがあるのは私だけかな?)
こんにちは。
Google Chromeでは動作しないみたいなのですが、上手く動作できる
方法がございましたら、教えてくださいませ。
宜しくお願い致します。
>nishiuraさん
ありがとうございます。
バグがあったようですので修正しました。
Google chromeのバグ修正に差し替えたら、IEでうまく動かない(少し下に下がるだけ)になってしまいました・・・
なんとかできないでしょうか。対処の仕方があればお願いいたします。
>ののこさん
IEでの動作することは確認しておりますので、なにか別の要因かも。どのようなページで、どのバージョンのIEで動作しないか詳しく教えてください。
とても使いやすいjsですね!
ただ、はじめ、設置しても動いてくれず悪戦苦闘しました。
原因はid(id="test_01" 等)にアンダーバーを使っていたためのようです。
もし、正常に動作しない方がいたら、確認してみてはいかがでしょうか。
気持ちのいい動作をするjsですね!
jsは素人なのでほとんどわからないのですが、
自分でブログスキンをつくりたかったので、早速お借りしました。
ところが、smoothScrollを加えたあとに、
今まで正常に動いていたほかのjsが動かなくなりました。
動かなくなったものもよそからお借りしたjsなのですが、
記事の続きをクリック開閉するものです。
openボタンで開く動作は問題ないのですが、
closeで閉じなくなりました。
closeボタンにフォーカスすると「javascript:void(0)」
とIEウィンドウの左下にコメントアウトされています。
どうしたら動くようにできるのでしょうか。。。
どうかご指南ください。
先日コメントした者です。
その後、複数のリンク箇所に同じ不具合が出てしまったので、
自分のスキルでは無理だと判断し、
別のスクローラーを使うことにしました。
勝手に自己解決してしまい、申し訳ありません。
前回のコメントが未承認で残っていましたら削除ください。
それでは、失礼しました。