はじめに
スマホでよく見るようなドロップダウンメニューを作る。
jQueryを使えば簡単に実装することができる。
HTML
以下のコードを<head>
に書いてjQueryを読み込む
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<header>
は画面上部に表示されるメニューバー、<header>
内部の<nav>
がドロップダウンメニューの中身になる。
<ul>
がメニューのリスト。<li>
がそれぞれのメニューを示している。
#menu_button
を押すと<ul>
が開閉するように実装する。
<main>
はメインコンテンツを示す。
<header>
<div class="menu_button"><span>menu</span></div>
<nav class="nav">
<ul>
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
</ul>
</nav>
</header>
<main>
<div style="width: 50%; height:1000px; background-color: #aaa; margin: 0 auto;">
メイン
</div>
</main>
メニューの基本構造
<hearder>
の高さを定めてその分だけ<nav>
と<main>
を下に配置する。
以下の例ではheight
を40pxにしている。
<nav>
と<main>
のposition
をabsoluteに設定して、top
をそれぞれ100%, 40pxとした。
<nav>
は<header>
の内部にあるので100%と設定すれば<header>
の下に配置される。
また常にメニューバーを表示させるためにposition
をfixed、z-index
を大きな値である1000にしている。
header {
height: 40px;
z-index: 1000;
position: fixed;
}
header nav {
position: absolute;
top: 100%;
}
main {
position: absolute;
top: 40px;
}
デザイン
デザインは以下のとおり。
これでドロップダウンメニューが開かれた状態が表示される。
header {
background-color: #111;
color: white;
width: 100%;
}
header .menu_button {
border-left: solid 1px white;
float: right;
width: 70px;
height: 100%;
text-align: center;
}
header .menu_button span {
line-height: 40px;
}
header nav {
background-color: #111;
color: white;
width: 100%;
}
header nav ul {
list-style-type: none;
margin: 0;
padding: 0;
}
header nav ul li:first-child {
border-top: solid 1px white;
}
header nav ul li {
border-bottom: dotted 1px white;
text-align: center;
padding: 1em;
}
main {
width: 100%;
}
jQueryによるドロップダウンの実装
初期設定として.nav
のdisplay
をnoneにしてメニューが閉じた状態にする。
.menu_button
のクリック時に$(".nav").slideToggle()
が実行されるようにして完成。
$(function() {
$(".nav").css("display","none");
$(".menu_button").on("click", function() {
$(".nav").slideToggle();
});
});