みなさんこんにちは、 masa です。サイトのメインメニューというのはアイキャッチとともに非常に目立ち、ユーザーが最初に操作する可能性が高いパーツですよね。デザイナーのみなさんが個性を出しやすいと同時に、デザインに悩みがちなメニューですが、今日はマウスホバー時にアンダーバーを追随させる方法をご紹介します。
まずはこちらの DEMO をご覧ください。
マウスをホバーするとホームにいたバーが追いかけてくるメニューです。
上記のものを作る際には 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 デザインを変えてオリジナルのメニューを作成してみてくださいね。