HTML:CSSで作成した多階層ドロップダウンメニュー
CSSだけで何階層でも可能なドロップダウンメニューを作成しました。また、transition を使って、アニメーション効果を出しています。 尚、作成に当たり下記のサイトを参考にさせて頂きました。ありがとうございました <(_ _)>
1.CSSだけで作る「多階層」なドロップダウンメニュー
2.シンプルなソース・CSSだけでアニメーション・ドロップダウンメニュー
3.アクセシビリティを考えたドロップダウンメニューを実装する
4.Bootstrap3のドロップダウンを多階層にする方法
5.すごく役立った!サイト制作でさりげなく使われているCSSテクニックまとめ
menu.htm
<html>
<head>
<link rel="stylesheet" type="text/css" href="menu.css"/>
</head>
<body>
<div class="menu">
<ul>
<li>
<a href="#">main menu 1</a>
<ul>
<li><a href="#">submenu 1-1</a>
<ul>
<li><a href="#">submenu 1-1-1</a></li>
<li><a href="#">submenu 1-1-2</a></li>
<li><a href="#">submenu 1-1-3</a></li>
</ul>
</li>
<li><a href="#">submenu 1-2</a>
<ul>
<li><a href="#">submenu 1-2-1</a></li>
<li><a href="#">submenu 1-2-2</a></li>
<li><a href="#">submenu 1-2-3</a></li>
</ul>
</li>
<li><a href="#">submenu 1-3</a>
<ul>
<li><a href="#">submenu 1-3-1</a></li>
<li><a href="#">submenu 1-3-2</a>
<ul>
<li><a href="#">submenu 1-3-2-1</a></li>
<li><a href="#">submenu 1-3-2-2</a></li>
<li><a href="#">submenu 1-3-2-3</a></li>
</ul>
</li>
<li><a href="#">submenu 1-3-3</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#">main menu 2</a>
<ul>
<li><a href="#">submenu 2-1</a></li>
<li><a href="#">submenu 2-2</a>
<ul>
<li><a href="#">submenu 2-2-1</a></li>
<li><a href="#">submenu 2-2-2</a></li>
<li><a href="#">submenu 2-2-3</a></li>
</ul>
</li>
<li><a href="#">submenu 2-3</a></li>
</ul>
</li>
<li>
<a href="#">main menu 3</a>
<ul>
<li><a href="#">submenu 3-1</a></li>
<li><a href="#">submenu 3-2</a></li>
<li><a href="#">submenu 3-3</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
menu.css
.menu {
margin: 0 auto;
width: 600px; //メインの項目数×liのwidth;
}
.menu ul {
margin: 0;
padding: 0;
z-index: 1000;
list-style: none;
}
.menu ul li {
position: relative;
float: left;
width: 200px;
height: 30px;
line-height: 30px;
background: black;
}
.menu ul li a {
display: block;
color: white;
font-family: 'MS Gothic';
font-size: 13px;
font-weight: bold;
text-align: center;
text-decoration: none;
}
.menu ul li:hover > a {
color: gold;
background: #303030;
}
.menu ul li ul {
position: absolute;
}
.menu ul li ul li {
overflow: hidden;
height: 0;
background: #505050;
}
.menu ul li:hover > ul > li {
overflow: visible;
height: 30px;
transition: 0.5s;
}
.menu ul li ul li a {
background: #505050;
}
.menu ul li ul li ul {
top: 0;
left: 100%;
}
.menu ul li ul li ul:before {
position: absolute;
top: 10px;
left: -15px;
content: "";
border: 5px solid transparent;
border-left-color: silver;
}