CSS3のborder-radius, box-shadow, text-shadowを使って角丸+ドロップシャドー付きのドロップダウンメニューを作るテクニックをエントリーしてみます。
こちらにデモページを用意しましたので、まずはご覧になっていただければと思います。
ドロップダウンメニューの作り方
作り方はまず、ボディー内に以下のコードを書き込みます。
[html]
<ul id="nav" class="clearfix">
<li class="current"><a href="#">HOME</a></li>
<li><a href="#">メニュー 1</a>
<ul>
<li><a href="#">メニュー 1-1</a></li>
<li><a href="#">メニュー 1-2</a></li>
<li><a href="#">メニュー 1-3</a></li>
<li><a href="#">メニュー 1-4</a></li>
<li><a href="#">メニュー 1-5</a></li>
</ul>
</li>
<li><a href="#">メニュー 2</a>
<ul>
<li><a href="#">メニュー 2-1 →</a>
<ul>
<li><a href="#">メニュー 2-1-1</a></li>
<li><a href="#">メニュー 2-1-2</a></li>
<li><a href="#">メニュー 2-1-3</a></li>
<li><a href="#">メニュー 2-1-4</a></li>
</ul>
</li>
<li><a href="#">メニュー 2-2</a></li>
<li><a href="#">メニュー 2-3 →</a>
<ul>
<li><a href="#">メニュー 2-3-1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">メニュー 3</a>
<ul>
<li><a href="#">メニュー 3-1 →</a>
<ul>
<li><a href="#">メニュー 3-1-1</a></li>
<li><a href="#">メニュー 3-1-2 →</a>
<ul>
<li><a href="#">メニュー 3-1-2-1</a>
<li><a href="#">メニュー 3-1-2-2</a>
<li><a href="#">メニュー 3-1-2-3</a>
</ul>
</li>
<li><a href="#">メニュー 3-1-3</a></li>
<li><a href="#">メニュー 3-1-4</a></li>
</ul>
</li>
<li><a href="#">メニュー 3-2 →</a>
<ul>
<li><a href="#">メニュー 3-2-1</a></li>
<li><a href="#">メニュー 3-2-2</a></li>
<li><a href="#">メニュー 3-2-3</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">メニュー 4</a></li>
<li><a href="#">メニュー 5</a></li>
</ul>
[/html]
次に、CSSをヘッダ内に書き込むか、外部ファイルにして読み込みます。
CSSは以下のようになっています。
[css]
body {
font-size: 62.5%; /* Resets 1em to 10px */
font-family: Verdana, Geneva, sans-serif;
background: #EEE;
width: 800px;
margin: 0 auto;
color: #666;
}
p {
text-align: center;
}
a {
color: #333;
}
#nav {
margin: 120px 0;
padding: 8px 5px 0;
background: #808080;
line-height: 100%;
/* メニューの外枠の角丸 */
border-radius: 2em;
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
/* メニューの外枠のドロップシャドウ */
box-shadow: 0 3px 3px rgba(0,0,0,0.5);
-webkit-box-shadow: 0 3px 3px rgba(0,0,0,0.5);
-moz-box-shadow: 0 3px 3px rgba(0,0,0,0.5);
}
#nav li {
margin: 0 5px;
padding: 0 0 8px;
float: left;
position: relative;
list-style: none;
}
/* メニューのリンク設定 */
#nav a {
font-weight: bold;
color: #EEE;
text-decoration: none;
display: block;
padding: 8px 20px;
margin: 0;
/* メニュー枠の角丸 */
border-radius: 1.6em;
-webkit-border-radius: 1.6em;
-moz-border-radius: 1.6em;
text-shadow: 0 1px 1px rgba(0,0,0,0.5);
}
#nav a:hover {
background: #000;
color: #fff;
}
/* メニューのマウスオーバーの設定 */
#nav .current a,
#nav li:hover > a {
background: #EEE;
color: #444;
/* メニュー枠のドロップシャドウ */
box-shadow: 0 1px 1px rgba(0,0,0,0.5);
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.5);
-moz-box-shadow: 0 1px 1px rgba(0,0,0,0.5);
/* メニューテキストのドロップシャドウ */
text-shadow: 0 1px 0 rgba(255,255,255, 1);
}
/* ドロップダウンメニューの設定 */
#nav li:hover > ul {
display: block;
}
/* ドロップダウンメニューのマウスオーバーの設定 */
#nav ul li:hover a,
#nav li:hover li a {
background: none;
border: none;
color: #666;
/* ドロップダウンメニュー内ドロップシャドウ非表示 */
box-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
}
#nav ul a:hover {
background: #67F !important;
color: #fff !important;
/* ドロップダウンメニューマウスオーバー時の角丸非表示 */
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
/* ドロップダウンメニューマウスオーバー時のドロップシャドウ */
text-shadow: 0 1px 1px rgba(0,0,0,0.5);
}
/* ドロップダウンメニュー第1リストの設定 */
#nav ul {
display: none;
margin: 0;
padding: 0;
width: 180px;
position: absolute;
top: 34px;
left: 0;
background: #F2F2F2;
border: solid 1px #AAA;
/* 第1リストの角丸 */
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
/* 第1リストのドロップシャドウ */
box-shadow: 0 1px 3px rgba(0,0,0, .3);
-webkit-box-shadow: 0 1px 3px rgba(0,0,0, .3);
-moz-box-shadow: 0 1px 3px rgba(0,0,0, .3);
}
#nav ul li {
float: none;
margin: 0;
padding: 0;
}
#nav ul a {
font-weight: normal;
text-shadow: 0 1px 0 #fff;
}
/* ドロップダウンメニュー第2リスト以降の設定 */
#nav ul ul {
left: 179px;
top: -1px;
}
/* ドロップダウンメニュー最上段リストの角丸 */
#nav ul li:first-child > a {
border-top-left-radius: 9px;
-webkit-border-top-left-radius: 9px;
-moz-border-radius-topleft: 9px;
border-top-right-radius: 9px;
-webkit-border-top-right-radius: 9px;
-moz-border-radius-topright: 9px;
}
/* ドロップダウンメニュー最下段リストの角丸 */
#nav ul li:last-child > a {
border-bottom-left-radius: 9px;
-webkit-border-bottom-left-radius: 9px;
-moz-border-radius-bottomleft: 9px;
border-bottom-right-radius: 9px;
-webkit-border-bottom-right-radius: 9px;
-moz-border-radius-bottomright: 9px;
}
/* clearfix */
.clearfix:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
.clearfix {
display: inline-table;
}
* html .clearfix {
height: 1px;
}
.clearfix {
display: block;
}
[/css]
Firefox, Safari, Chromeでは角丸+ドロップシャドウ付きのドロップダウンメニューになると思います。
なお、Opera, IE8では角丸やドロップシャドウなどの効果は表現されないのですが、ドロップダウンメニューはなっています。
IE6ではドロップダウンメニューにすらならないですね…
コメントを残す