jQuery でメニューにバーを追随させる


みなさんこんにちは、 masa です。サイトのメインメニューというのはアイキャッチとともに非常に目立ち、ユーザーが最初に操作する可能性が高いパーツですよね。デザイナーのみなさんが個性を出しやすいと同時に、デザインに悩みがちなメニューですが、今日はマウスホバー時にアンダーバーを追随させる方法をご紹介します。

まずはこちらの DEMO をご覧ください。
follow_bar1

マウスをホバーするとホームにいたバーが追いかけてくるメニューです。
上記のものを作る際には HTML, CSS, jQuery を使います。

(HTML)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="../css/sample.css">
  <script type="text/javascript" src="../js/jquery-1.11.1.js"></script>
</head>

<body>
  <div id="menu">                                                                                                                                                                                    
    <div id="nav"> // 以下ご自由にメニューを書き換えてください
      <a href="">サービス</a>                                                                                                                                                                        
      <a href="">お問い合わせ</a>                                                                                                                                                                    
      <a href="">開発プロセス</a>                                                                                                                                                                    
      <a href="">技術ブログ</a>                                                                                                                                                                      
      <a href="">会社情報</a>                                                                                                                                                                        
      <a class="current" href="">ホーム</a>                                                                                                                                                          
      <span></span>
    </div><!-- nav -->
  </div><!-- menu -->

<script>
$(function() {
        $('#nav span').css({ 
                width: $('#nav .current').outerWidth(),
                left: $('#nav .current').position().left 
        });
        $('#nav a').mouseover(function(){
                $('#nav span').stop().animate({
                        width: $(this).outerWidth(),
                        left: $(this).position().left}
                ,{ duration: 170, easing: 'linear', });
                //上記でバーの移動スピードとイージング方法を設定できます
        });
});
</script>

</body>
</html>

 

(CSS)

#menu {
    font-size: 16px;
    width: 100%;
    padding: 12px 0;
    text-align: center;
    background: #2C3E50;
}

#menu a {
    margin: 0 4% 0 0;
    text-decoration: none;
    color: white;
}

#menu a:visited {
    text-decoration: none;
    color: white;
}

#menu a:hover {
    text-decoration: none;
}

#nav {
    position: relative;
}

#nav a {
    padding:10px;
}

#nav span {
    background: #FD9802; //バーの色を設定できます
    height: 2px; //バーの太さを設定できます
    display: block;
    position: absolute;
    width: 30px;
    left: 0
}

#nav a:hover {
    cursor: pointer;
}

これだけです。バーの移動スピードが遅すぎるとユーザーがストレスを感じる可能性もありますので、個人的には 170ms あたりがオススメです。CSS デザインを変えてオリジナルのメニューを作成してみてくださいね。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>