jQueryで滑らかなアニメーションのスライドを簡単に実装できるナビゲーション[js]

CSS-Tricksより、jQueryで滑らかなアニメーションのスライドを実装できるナビゲーションの紹介です。

デモページはコチラから

設置方法はビックリすぎるぐらい簡単でした。

HTML

<div class="nav-wrap">
 <ul class="group" id="example-one">
    <li class="current_page_item"><a href="#">Home</a></li>
    <li><a href="#">Buy Tickets</a></li>
    <li><a href="#">Group Sales</a></li>
    <li><a href="#">Reviews</a></li>
    <li><a href="#">The Show</a></li>
    <li><a href="#">Videos</a></li>
    <li><a href="#">Photos</a></li>
    <li><a href="#">Magic Shop</a></li>
 </ul>
</div>

ソースコード例として載ってあるHTMLをそのまま使うのが一番楽ですね。もっとも簡単に実装できます。そうでない場合は、ポイントは、ul要素に付加されているid="example-one"とli要素に付加されているclass="current_page_item"です。

これらの部分には、下記のjQueryのソースコードでも使われているので、それらの部分のid名やclass名を変更すると、jQueryのソースコードの箇所も変更しなければなりません。

jQuery

$(function() {

    var $el, leftPos, newWidth,
        $mainNav = $("#example-one");

    $mainNav.append("<li id='magic-line'></li>");
    var $magicLine = $("#magic-line");

    $magicLine
        .width($(".current_page_item").width())
        .css("left", $(".current_page_item a").position().left)
        .data("origLeft", $magicLine.position().left)
        .data("origWidth", $magicLine.width());

    $("#example-one li a").hover(function() {
        $el = $(this);
        leftPos = $el.position().left;
        newWidth = $el.parent().width();
        $magicLine.stop().animate({
            left: leftPos,
            width: newWidth
        });
    }, function() {
        $magicLine.stop().animate({
            left: $magicLine.data("origLeft"),
            width: $magicLine.data("origWidth")
        });
    });
});