【jQuery】スマホサイトでよく見るハンバーガーメニューの作り方
jQueryのslideToggleメソッドを使ってナビゲーションメニューを表示・非表示させる方法を書き留めておきます。
三本線をタップするとメニューが表示されるやつです。
jQueryを読み込んでおく
GoogleのCDNからjQueryを読み込みます。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
ソースコード
HTML
<div class="menu_btn"></div>
<div id="navi">
<ul>
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
</ul>
</div>
はじめ<div id="navi">
をCSSで非表示にしておきます。
そして、その非表示になっている<div id="navi">
をjQueryで表示したり非表示にしたりします。
JavaScript
$(function(){
$(".menu_btn").click(function(){
$("#navi").slideToggle();
$(this).toggleClass('close');
});
});
<div class="menu_btn">
がクリックされたら、
slideToggle
で<div id="navi">
を表示toggleClass
でclass="menu_btn"
にclose
を追加
します。
もう一度<div class="menu_btn">
がクリックされたら、
slideToggle
で<div id="navi">
を非表示toggleClass
でclass="menu_btn close"
のclose
を削除
します。
CSS
.menu_btn{
width: 35px;
height: 35px;
background-image: url(画像のパス);
}
.close{
background-position: -35px 0;
}
#navi{
display: none;
position: absolute;
top: 60px;
left: 0;
z-index: 100;
width: 100%;
background: #eee;
}
#navi
前述の通り、はじめ<div id="navi">
をdisplay:none
で非表示にしておきます。
表示されているときは、他の要素よりも上に配置されるようにz-index:100
を指定。表示位置はtop:
left:
で調整します。
.menu_btn .close
CSSでボタンを作成することもできますが、今回は次のような画像(横75px縦35px)を用意してclose
あり・なしで切り替えます。
表示されているときはclose
が追加されているので「×」の位置を指定。非表示のときはclose
が削除されているので「三本線」の位置を指定します。