jQueryを使った簡単な実装例

@rewish

目次

本日は以下の内容をザックリと紹介します!

応用1) ロールオーバー

JSでロールオーバーを実装する場合のオレオレ要件。

つまり・・・

HTMLではロールオーバー前の画像を指定するだけにして、

ロールオーバーはファイル名の末尾に_onを付けてsrc属性を書き換えて、

既に_onが付いていたらロールオーバーしないようにして、

<nav>
    <ul>
        <li><a href="page1"><img src="images/page1_on.png"></a></li>
        <li><a href="page2"><img src="images/page2.png"></a></li>
        <li><a href="page3"><img src="images/page3.png"></a></li>
    </ul>
</nav>

あとはプリロード機能を付ければ要件は満たせそう。

応用1) ロールオーバー

こんな感じになりました。

jQuery(function($) {
    var suffix = '_on';
    $('nav a img').each(function() {
        var img  = $(this);
        var src  = img.attr('src');
        var name = src.substr(0, src.lastIndexOf('.'));
        var ext  = src.substring(src.lastIndexOf('.'));
        if (name.match(suffix + '$')) return;
        var src_on = name + suffix + ext;
        $('<img>').attr('src', src_on);
        img.hover(
            function() { img.attr('src', src_on); },
            function() { img.attr('src', src); }
        );
    });
});

応用1) ロールオーバー

やったー!できたー!

ちなみにプリロード機能が無いと・・・

回線状況よっては、初回ロールオーバー時に遅延が発生します。

今回のコードはプラグイン化していませんが、プラグイン化することでもっと使い易くなるはずです!

応用2) スムーススクロール

まずは、スムーススクロールの例を見てみましょう。

こんな感じのスルッスルのスクロールを、jQueryなら超簡単に実装できます。

jQuery(function($) {
    $('a[href^="#"]').click(function() {
        var target = $(this.hash);
        var top = target.offset().top;
        $('html, body').animate({scrollTop: top}, 1000);
        return false;
    });
});

すごく簡単ですね!さすがjQuery!

※このままだとOperaで動かないかも知れないよ!詳細はググってね!

お・ま・け

delayメソッドdequeueメソッドのそれっぽい使い方

delayメソッドとは、キューを指定秒数遅らせる・・・

ザックリ言うと、直後に指定されたアニメーションの実行を指定秒数遅らせるメソッドです。

jQuery(function() {
    $('#message')
        .delay(2000)
        .slideUp();
});

ログインしました!のようなメッセージ

お・ま・け

dequeueメソッドとは、実行中のキューを中断して・・・

ザックリ言うと、実行中のアニメーションやdelayを中断して、次のアニメーションを実行するメソッドです。

指定秒数待たずにメッセージを消したい場合に、dequeueメソッドを使うとそれっぽくなります。

jQuery(function() {
    $('#message')
        .delay(2000)
        .slideUp()
        .click(function() { $(this).dequeue(); });
});

ログインしました!のようなメッセージ

なんとなくそれっぽい感じがしますね。します。

色々応用すると面白いことが出来るかも知れません。

Thank you!