CSSだけで作るドロップダウンメニュー

Webmonkeyより、CSSだけで作るドロップダウンメニューの紹介です。

navi0810212.jpg

Webmonkeyのコメントより、CSSだけで作るドロップダウンメニューは、以前と比べて作成は簡単になったとのことです。

以下、CSSとXHTMLのソースだけで、たしかに簡単に設置できます。

XHTML


<ul id="nav">
	<li><a href="">Home</a></li> 
    <li><a href="">Web</a> 
      <ul> 
        <li><a href="">Browser</a></li> 
        <li><a href="">Search</a></li> 
      </ul> 
    </li> 
    <li><a href="">Monkey</a> 
      <ul> 
        <li><a href="">Eating Banana</a></li> 
        <li><a href="">Throwing Poop</a></li> 
      </ul> 
    </li>
    <li><a href="">Contact</a> 
      <ul> 
        <li><a href="">Via Web</a></li> 
        <li><a href="">Via Phone</a></li> 
        <li><a href="">Via tin can and string</a></li> 
      </ul> 
    </li> 
	 
</ul>

CSS


ul {
	margin: 0;
	padding: 0;
	list-style: none;
}
ul li {
	position: relative;
	float: left;
        width: 100px;

}
li ul {
	position: absolute;
	top: 30px;
	display: none;
}
ul li a {
	display: block;
	text-decoration: none;
	line-height: 20px;
	color: #000;
	padding: 5px;
	background: #CC0;
	margin: 0 2px;
}

ul li a:hover { background: #66F; }
li:hover ul, li.over ul { display: block; }

以下、ブラウザで動作確認しました。

  • Firefox3
  • IE7
  • Opera9.5
  • Safari3.1

しかし、IE6で動作させるためには、JavaScriptを使う必要があります。

よって、IE6で動かすためには、以下のJavaScriptを設置する必要があります。

JavaScript


startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
  }
  node.onmouseout=function() {
  this.className=this.className.replace(" over", "");
   }
   }
  }
 }
}
window.onload=startList;

こういったドロップダウンメニューは、よくAjaxやJavascriptで作られますが、CSSだけでの作成は、アクセシビリティにおいても良いと思いますので、こういった技術は多いに賛同できます。

元記事はコチラから