サイドドロップダウンメニューの実装 Dropdown menu

縦並びの横方向へドロップダウンするメニューです。
一段階のみの対応となりますのでご注意ください。

デモ

サンプルコード

JavaScript

var dropdown = function(e) {
	var node       = null,
	    anchorNode = null,
	    targetId   = '',
	    thisId     = '',
	    nodes      = this.parentNode.childNodes;

	anchorNode = this.childNodes[0];
	targetId   = anchorNode.href;

	if ((n = targetId.lastIndexOf('#')) !== -1) {
		thisId = targetId.substring(n).replace('#', '');
		node   = document.getElementById(thisId);

		if (e.type === 'mouseover') {
			node.style.display    = 'block';
			node.style.visibility = 'visible';
		} else {
			node.style.display    = 'none';
			node.style.visibility = 'hidden';
		}
	}

	for (var i = 0, len = nodes.length; i < len; i++) {
		if (nodes[i].nodeType !== 1) continue;

		anchorNode = nodes[i].childNodes[0];
		targetId   = anchorNode.href;

		if ((n = targetId.lastIndexOf('#')) !== -1) {
			targetId = targetId.substring(n).replace('#', '');
			if (targetId !== '' && thisId !== targetId) {
				node = document.getElementById(targetId);
				node.style.display    = 'none';
				node.style.visibility = 'hidden';
			}
		}
	}
};

var menu01Btn = document.getElementById('menu01'),
    menu02Btn = document.getElementById('menu02');

menu01Btn.onmouseover = dropdown;
menu01Btn.onmouseout  = dropdown;
menu02Btn.onmouseover = dropdown;
menu02Btn.onmouseout  = dropdown;

HTML

<ul id="dropdown">
	<li><a href="">menu 1</a></li>
	<li id="menu01"><a href="#dd01">menu 2</a>
		<ul id="dd01">
			<li><a href="">menu 2-1</a></li>
			<li><a href="">menu 2-2</a></li>
			<li><a href="">menu 2-3</a></li>
			<li><a href="">menu 2-4</a></li>
			<li><a href="">menu 2-5</a></li>
		</ul>
	</li>
	<li id="menu02"><a href="#dd02">menu 3</a>
		<ul id="dd02">
			<li><a href="">menu 3-1</a></li>
			<li><a href="">menu 3-2</a></li>
			<li><a href="">menu 3-3</a></li>
			<li><a href="">menu 3-4</a></li>
			<li><a href="">menu 3-5</a></li>
		</ul>
	</li>
	<li><a href="">menu 4</a></li>
	<li><a href="">menu 5</a></li>
</ul>

CSS

HTML


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

	ul#dropdown li {
		position:relative;
		margin:0;
		padding:0;
		width:150px;
		height:27px;
		vertical-align:top;
	}

		ul#dropdown li a {
			display:block;
			border-top:1px solid #ddd;
			border-left:1px solid #ddd;
			border-right:1px solid #999;
			border-bottom:1px solid #999;
			padding:5px;
			width:138px;
			height:15px;
			background-color:#f5f5f5;
			line-height:15px;
			color:#000;
			text-decoration:none;
		}

		ul#dropdown li a:hover {
			background-color:#eaf5fd;
		}

		ul#dropdown li ul {
			visibility:hidden;
			display:none;
			position:absolute;
			top:0;
			left:150px;
			margin:0;
			padding:0;
			width:150px;
			list-style:none;
		}

JavaScript逆引きリファレンス一覧へ戻る