WordPressのメニューなどを、jQueryを使ってちょっとかっこいいドロップダウンメニューにするためのメモ。
あまり凝ったデザインや演出はありませんが、実はほとんどがCSSで対処できますのでノンプログラマーの人におすすめです。
ステップ1: メニューのHTMLを準備する。
メニューのHTMLは以下のようなネストしたリストを前提としています。
<ul id="nav">
<li><a href="a.html">製品案内</a></li>
<li><a href="b.html">会社概要</a>
<ul>
<li><a href="c.html">交通アクセス</a></li>
</ul>
</li>
<ul>
ステップ2: CSSを準備する。
CSSは以下のような感じで。背景などの装飾は一切加えていないテンプレートのようなものです。
#nav, #nav ul
{
margin: 0;
padding: 0;
list-style-type: none;
}
#nav > li
{
float: left;
position: relative;
height: 40px;
line-height: 40px;
}
#nav a
{
display: block;
white-space: nowrap;
}
#nav ul
{
display: none;
position: absolute;
top: 40px;
left: 0px;
z-index: 10;
}
ステップ3: JavaScriptを用意する。
意外なことにJavaScriptは、とてもシンプル。
以下のソースを</body>の直前にコピペしてください。
jQueryはあらかじめ読んでおいてくださいね。
$('#nav > li').each(function(){
if ($('ul', this).length) {
$(this).addClass('has_child');
}
$(this).bind('mouseenter', function(){
$('ul', this).slideDown(200);
});
$(this).bind('mouseleave', function(){
$('ul', this).hide();
});
});
ステップ4: かっこよくする。
ここから先はデザインに応じてCSSを試行錯誤することになります。
- #navに背景を設定する。
- #nav ulに背景を設定する。
- a要素に背景を設定する。
- a:hoverで背景を変える。
- 行の高さや文字サイズ、余白などの微調整。(特に孫となるリスト要素などに注意。)
- このJavaScriptではサブメニューがあるli要素にhas_childという値を持つクラス属性をつけていますので、たとえば三角のアイコンを設置するなどのCSSを設定する。
はい、実はステップ4が最も大変なのでした。^^
以下のようなCSSと組み合わせると幸せになれると思います。
CSS3 Fancy Menu / LavaLamp Menu
JavaScriptは苦手だけどCSSはいけるぜ!という人はぜひ挑戦を。^^