jQueryでオリジナルのメガドロップダウンメニューを作成する
jQueryを使って簡単なメガドロップダウンメニューです。
このブログのグローバルメニューでも使っている、簡易的なメガドロップダウンメニューです。
このブログをサンプルに説明したいと思います。コードは見やすいように、要点のみの抜き出しています。また、jQueryのバージョンは1.4.2ですが、1.3系でも動作するはずです。
まずはHTML部分ですが、ulタブで2段階に組みます。1段目がカテゴリメニュー、2段目がサブカテゴリメニューというイメージです。
2段目のulについてはデフォルトで「display: none;」というようにして、非表示状態にします。
<ul id="Gmenu"> <li class="parent"> <a href="/category/php/">PHP</a> <ul style="display: none;"> <li><a href="/category/php/pear/">PEAR</a></li> <li><a href="/category/php/smarty/">Smarty</a></li> <li><a href="/category/php/xampp/">xampp</a></li> <li><a href="/category/php/zend-framework/">Zend Framework</a></li> </ul> </li> <li class="parent"> <a href="/category/api-2/">API</a> <ul style="display: none;"> <li><a href="/category/api-2/google-maps/">Google Maps API</a></li> <li><a href="/category/api-2/twitter-api/">Twitter API</a></li> <li><a href="/category/api-2/rakuten_api/">楽天API</a></li> </ul> </li> <li class="parent"> <a href="/category/hp/">HTML/CSS</a> <ul style="display: none;"> <li><a href="/category/hp/css-2/">CSS</a></li> <li><a href="/category/hp/html-2/">HTML</a></li> <li><a href="/category/hp/html5/">HTML5</a></li> </ul> </li> </ul>
次にCSS部分です。ポイントはドロップダウンでオープンする2段目のulタグ「#Gmenu .parent ul」のレイアウトが他の要素に影響しないように「position: absolute;」とすることです。また、他の要素の裏に隠れてしまわないように「z-index」を設定します。
#Gmenu .parent{ position: relative; display: block; height: 30px; line-height: 0; } #Gmenu .parent ul{ position: absolute; background: url('/images/gmenu_bg_pulldown.png') repeat-x 0 bottom; border: 1px solid #000000; padding: 7px 10px; width: 130px; z-index: 1; } #Gmenu .parent ul li{ display: block; background: url('/images/mark05.png') no-repeat 0 center; text-indent: 10px; }
最後にJavaScript処理です。
全てのクラスが「parent」の要素、つまり1段目のliタグにロールオーバー処理を追加します。その内容はオーバー時に2段目のul要素を表示、マウスアウト時に隠すという処理を起票時に実行します。
$('#Gmenu').find('.parent').each(function(){ $(this).hover( function(){ $(this).find('ul').fadeIn(); }, function(){ $(this).find('ul').fadeOut(); } ); });
以上で、このサイトのようなメガドロップダウンメニューを構築することができます。
簡単ですね。
以前にJavaScriptのみでメガドロップダウンメニューを構築した際には苦労しましたが、jQueryを使うとこんなにも簡単に構築することができるんですね。
コメントする