Movable Type 備忘録

 ScrollTo with jQuery

  • Dec232008
  • Vote:
    http://bizcaz.com/archives/2008/12/23-133748.php
  • Categories: jQuery
  • Tags:
  • Social Bookmark

こんにちわ^^

以前、jQuery の interface.js を使ったスムーススクロールをご紹介したことがあります。

スムーススクロールには ScrollTo プラグインってのもあります。

でもいろいろ思うとこありまして、プラグインを使わずに jQuery のデフォルト機能を使って、もっとお手軽にスムーススクロールを実装する方法のご紹介です。

今回はサンプルは用意してないのですが、わたしのサイトのタグ検索などをやってみてもらえれば分かると思います。
そんなかんじのものが作れます。

カンタンに説明すると、任意のエレメントまでスクロール後、任意のファンクション実行を可能とするものです。
しかも jQuery 標準で備わってる animate エフェクトを使ってるだけです。

ダウンロード

以下から ScrollTo プラグインをダウンロードできます。

大したことやってないのですが、良かったら使ってみてください。
一応わたしのサイトでも使ってるものを切り出したプラグインなので Firefox、Safari、Opera、Google Chrome、IE で確認済みです。

[2009.01.24] スクロール後、2 回コールバックされてしまう不具合を以下のように改善しました。

原因のコード

  1. 修正前
  2. $('html, body')
  3. 修正後
  4. $(($.browser.safari || $.browser.msie) ? 'body' : 'html')

[2008.12.23] IE6 では動作できなかった。対応したつもりだったけど寝ぼけてたみたい・・・すいません。

[2008.12.25] IE6 ではスクロールされない原因が分かった気がする。厳密には IE6 でもスクロールはできてるのですが、スクロール先に body、または body の ID を指定した場合に限りなぜかその座標が 0 じゃないんだよねぇ。だからスクロールされないっぽい(つω-`。)困った。

[2008.12.27] 指定されたセレクタのタグ名が BODY だった場合無条件にポジション(=0)を初期化するよう対策しました。これで IE6 でも問題なく使えるようになりました。

使い方

  1. 単純にスクロールさせたいだけなら以下のように使います。

    スムーススクロール

    1. $('#top').ScrollTo(1200);

    青字の部分でスクロール先をセレクタに指定します。
    赤字はスクロールのスピードをミリ秒で指定します。'slow' や 'fast'、'normal' と指定しても問題ありません。 基本的には jQuery の animate エフェクトですから (●´∀`●)

  2. スクロール完了後に何らかの処理をさせたい場合には以下のように使います。たとえば、わたしのサイトのような、スクロール後 Ajax を使ってタグ検索したり、ページ移動したりなど。

    スムーススクロール後コールバック

    1. $('#top').ScrollTo(1200, function() {
    2.     alert('callback complete');
    3. });

    緑字のようにスクロール後、処理させたいファンクションを上記のように記述して、alert のような、各自の目的の処理をさせることができます。
    出回ってる ScrollTo プラグインではこれができなかったので自作しました。[2008.12.23] ScrollTo プラグインのコードを解析したら、コールバックってできるみたいね。今初めて知ったよ (; ̄∇ ̄A

以上です。カンタンですね ( ̄∇ ̄)b

 Trackback Pings(0)

No trackbacks found.

 Comments(2)

#1: Posted by 倫子 @ December 27, 2008 [REPLY]
user-pic

bzbellさーん!ご無沙汰ですあせあせ
今日は年末のご挨拶に来ましたw
物凄く寒いですが、お元気ですか?
体調崩されない様に元気でよいお年をお迎え下さい。
来年もよろしくお願いしますウインク

#2: Posted by Author Profile Page bzbellから倫子への返信 @ December 27, 2008 [REPLY]
user-pic

>>1 倫子 さん

倫子さん、こんばんわ^^

ホント寒過ぎて嫌になっちゃいますね。
本格的な寒さがこれからだと思うと堪らず湯たんぽ購入しちゃいましたうぅ~ん

倫子さんも元気でよいお年をお迎えください。
後日ブログの方にもご挨拶に伺いますやあ!

 Post a Comment

 

コメント用フィード