親メニューをクリックすると、それに属するサブメニューをスライドアニメーションで表示するメニュー。
例:親メニュー「News」をクリックすると、そのサブメニュー「Events」、「Activities」がスライドアニメーションで表示される。
この例はデザイン的なことやユーザビリティには配慮していないので、使用するアイコン画像、その表示のタイミング等に関しては別途考慮する必要がある。
<ul class="navi">
<li><div class="parentmenu">News</div>
<ul class="submenu">
<li><a href="#">Events</a></li>
<li><a href="#">Activities</a></li>
</ul>
</li>
<li><a href="indexjp.php">Contact</a></li>
</ul>
ul.navi{
width: 180px; /*メニューの幅全体を指定*/
}
ul.navi li div.parentmenu {
padding-left: 25px; /*マウスオーバー時に背景に画像を表示するためパディングを指定*/
cursor: pointer; /*マウスオーバー時にカーソルをポインターに*/
}
ul.navi li div.parentmenu:hover {
background: url(../images/Menu/menu_plus.gif) no-repeat left center;
/*マウスオーバー時に背景に「+」印の画像を表示*/
}
ul.navi li div.selected:hover {
background: url(../images/Menu/menu_minus.gif) no-repeat left center;
/*サブメニューをすでに表示している時は、マウスオーバー時に背景に「-」印の画像を表示*/
}
ul.navi li div.selected {
color: #333;
background: #EEE;
/*サブメニューを表示している時は、親メニューの背景に色を付ける*/
}
ul li {
font-size: 13px; font-size: 1.3rem;
line-height: 20px;
}
ul li a {
outline: 0; /*Firefoxでリンクをクリックした際、リンクの回りに点線が表示されないように*/
padding-left: 25px; /*マウスオーバー時に背景に画像を表示するためパディングを指定*/
display: block;
}
ul li a:hover {
color: blue;
background: url(../images/Menu/menu_square.gif) no-repeat left center;
/*マウスオーバー時に背景に「■」印の画像を表示*/
}
ul.submenu {
padding-left: 30px; /*サブメニューはインデントして表示*/
}
親メニューをクリックしたとき、サブメニューが開かれていなければ、サブメニューを表示し、サブメニューが開かれていれば、サブメニューを閉じる。
また、サブメニューが開かれている親メニューにクラス「selected」を付与して、マウスオーバー時に背景に「-」印の画像を CSS で表示するようにする。
$('ul.submenu').hide();
$('ul.navi li div.parentmenu').click(function() {
$('ul.submenu').slideUp(200);
$('ul.navi li div.parentmenu').removeClass('selected');
if($('+ul', this).css('display') == 'none') {
$('+ul', this).slideDown(200);
$(this).addClass('selected');
}
});