コピペOK。jQueryでハンバーガーメニューを簡単に作る方法
2058 回閲覧されました
みなさんこんにちは、jonioです。
今回はjQueryのハンバーガーメニューの解説をします。
初めて実装する場合はまずコピペで実装することをお勧めします。
コードの理解はjQueryにある程度慣れてからがいいと思います。
完成系のコード
完成形のコードは下記になります。
<!--HTML-->
<header class="header">
<div class="nav-wrapper">
<nav class="header-nav">
<ul class="nav-list">
<li class="nav-item"><a href="#">ハンバーガーメニュー1</a></li>
<li class="nav-item"><a href="#">ハンバーガーメニュー2</a></li>
<li class="nav-item"><a href="#">ハンバーガーメニュー3</a></li>
</ul>
</nav>
</div>
<div class="burger-btn">
<span>
<span class="bar bar_top"></span>
<span class="bar bar_mid"></span>
<span class="bar bar_bottom"></span>
</span>
</div>
</header>
<!--CSS-->
.burger-btn{
display: block;
width: 39px;
height: 39px;
position: relative;
z-index: 3;
}
.bar{
width: 20px;
height: 1px;
display: block;
position: absolute;
left: 50%;
transform: translateX(-50%);
background-color: #000;
}
.bar_top{
top: 10px;
}
.bar_mid{
top: 50%;
transform: translate(-50%,-50%);
}
.bar_bottom{
bottom: 10px;
}
.burger-btn.close .bar_top{
transform: translate(-50%,10px) rotate(45deg);
transition-duration: .3s;
background-color:#fff;
}
.burger-btn.close .bar_mid{
opacity: 0;
transition-duration: .3s;
}
.burger-btn.close .bar_bottom{
transform: translate(-50%,-8px) rotate(-45deg);
transition-duration: .3s;
background-color:#fff;
}
.nav-wrapper{
display: none;
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
}
.header-nav{
width: 100%;
height: 100%;
background-color:#1B1310;
z-index: 2;
}
.header-nav .nav-list{
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
text-align: center;
}
.header-nav .nav-item{
margin-right: 0;
margin-bottom: 40px;
}
.nav-list a{
color:#fff;
}
<!--jQuery-->
$(function(){
$('.burger-btn').on('click',function(){
$('.burger-btn').toggleClass('close');
$('.nav-wrapper').fadeToggle(500);
});
});
コピペするならこれをそのまま使って下さい。
ここからは実装方法を解説します。
ハンバーガーメニューの中身の作成
まずはハンバーガーメニューの中身から作ります。
5行目〜13行目がハンバーガーメニューの中身で最初は非表示にしないといけないので69行目があります。
ハンバーガーメニューを開いた時に画面いっぱいに使うのと画面スクロールせず固定させたいために70行目〜74行目があります。
77行目〜80行目はハンバーガーメニューの背景色を黒にして画面いっぱいに使うためにあります。
80行目はハンバーガーメニューを開いた時の中身が元々あった内容の上に来るようにするための記述です。
84行目〜87行目はハンバーガーメニューの中身のテキストが縦方向横方向の中央に来るようにするためにあります。
ハンバーガーメニューのアイコンの作成
次はハンバーガーメニューのクリックする部分(3本の横線)を作ります。
29行目〜33行目はハンバーガーメニューのサイズを作っています。
33行目のz-indexはハンバーガーメニューを開いた時に閉じるためのXボタンを表示させますが背景の下に隠れないようにするためにあります。
背景のz-indexは80行目にありz-indexは2ですがこれより大きくするので3にしています。
35行目〜53行目はハンバーガーメニューの線の位置、線の長さ、線の太さが書いてあります。
54行目〜67行目はハンバーガーメニューをクリックした時にどう変化するか(Xになる)です。
最後はjQuery
これでハンバーガーメニューができたのでクリックした時に中身が表示されるようにしますがそれをjQueryで行いそれが103行目・104行目です。
103行目がハンバーガーメニューをクリックした時にXマークに変えるための記述で104行目がハンバーガーメニューの中身を表示するための記述です。
これで完成です。