単純なドロップダウンメニューの実装

ここではカスタムでメニューを作ってみましょう。

様々なプラグインなどはあるのですが、単純なドロップダウンくらいなら、ul、li で作ってしまうのも良いかもしれません。

jQuery の知識、というよりは単に CSS が9割です。

単純なドロップダウンメニューの作成

jQuery を利用、といっても大したことでは利用していません。

HTMLは次のようになってます。全体を dropdown_container という ID の Div 要素にしてます。 メニューの中身は dropdown というクラスの ul (順序なしリスト) です。li 項目がメニューになってます。その li は a タグと ul タグで構成されていて、 ul 部分がスライドダウンします。

<div id="dropdown_container">
	<ul class="dropdown">
		<li class='dropdown_item'>
			<a href="http://android.keicode.com/">Android</a>
			<ul>
				<li><a href="#">Google</a></li>
				<li><a href="#">Apple</a></li>
			</ul>
		</li>
		<li class='dropdown_item'>
			<a href="#">Nav Item</a>
			<ul>
				<li><a href="#">Sub Item1</a></li>
				<li><a href="#">Sub Item2</a></li>
			</ul>
		</li>
	</ul>
	<div style='clear:both;'></div>
</div>

css は次の通り。気をつけるところはドロップダウン部分が absolute ポジションとするところと、a をブロック表示にすることでしょうか。

#dropdown_container {
	font-size:14px;
}

#dropdown_container ul.dropdown {
	margin:0;
	padding:0;
	list-style:none;
	width:400px;
}

#dropdown_container ul.dropdown a {
	display:block;
	text-decoration: none;
	color: #000;
	margin:5px;
}

#dropdown_container li.dropdown_item {
	float:left;
	width:100px;
	cursor:pointer;
}

#dropdown_container li.dropdown_item > ul {
	position:absolute;
	list-style:none;
	margin:0;
	padding:5px;
	width:150px;
}

#dropdown_container li.dropdown_item > ul li:hover
{
	background-color: #bbb;
	color: #000;
}

JavaScript ではメニュー項目の hover の on/off での動作を定義しています。

$(function() {
	init_menu();
});

function init_menu(){

	$('ul.dropdown li.dropdown_item').hover(
		function(){ 
			$(this).find('ul').slideDown(200);
		},
		function(){
			$(this).find('ul').hide();
		}
	);

	$('#dropdown_container')
.addClass('ui-widget-content ui-corner-all');
	$('li.dropdown_item > ul')
.addClass('ui-widget-content ui-corner-all');
	$('li.dropdown_item > ul').hide();
}

それと、角を丸くしたり jQuery UI のテーマに馴染ませるように ui-widget-content ui-corner-all を追加しています。

この程度で要件を満たせるなら、プラグインを使うより自由度があっていいかもしれませんね。