HTML、CSS、JavaScriptなどWebに悩む人のネタ帳です。

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を使うとこんなにも簡単に構築することができるんですね。

このエントリーをはてなブックマークに追加

Reference

Comment

Comment Form

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

Monthly Archives

Search