ハンバーガーメニュー仕組み
・HTML
・CSS
・javascript(jquery)
1.HTMLで「ハンバーガーアイコン」と「表示されるメニュー」を作成
2.JavaScript(jquery)でハンバーガーアイコンのクリックアクションを作成
3.2のクリックアクションでそれぞれのdivにclassを加えたり消したりする
4.3のclassの有無でdivのCSSが変化し、メニューの表示・非表示が行われる
1.ハンバーガー(三)ボタン
(三)ボタンを押すと(☓)ボタンに切り替わりメニューが表示される
2.閉じる(☓)ボタン
閉じるボタンを押すとメニューが非表示になり、(三)ボタンに切り替わる
3.メニュー部分(通常時非表示)(クリック時表示)
閉じるボタンを押すとメニュー部分が非表示になる
(例)ハンバーガーメニューの作り方(順番)
1.ハンバーガーメニューになる元を作る 2.ハンバーガーメニューの背景を作る(配置) 3.ボタン(三本線)を作る 4.クリックしたら閉じるボタン(☓)にする(切り替え) 5. メニューを表示・非表示にする 他にも作り方があり、このつくり方が正しいとは限らない。 ※spanで作ったり、divやチェックボックス、a、buttonなどで作っているのを見かける。 *** 1. ハンバーガーボタンのもとになるコード<div class="humburger"><!--ハンバーガーボタン-->
<span></span>
<span></span>
<span></span>
</div>
2.背景作る
.humburger {
background-color: beige; /*分かりやすく色をbeigeに*/
position: fixed; /*今回は固定して作ってます*/
top: 10px;
right: 10px;
width: 40px;
height: 40px;
}
3.三本線を作る
.humburger span {
width: 30px;
height: 1px;
background-color: #333;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: 0.3s; /*真ん中の線がゆっくり消えるように*/
}
.humburger span:nth-of-type(1) {
transform: translate(-50%, -10px);
}
.humburger span:nth-of-type(3) {
transform: translate(-50%, 9px);
}
4.クリックしたら☓ボタンになるように切り替え
真ん中の線を消して、上下の線を☓にする。
.humburger.active span:nth-of-type(1) {
transform: rotate(45deg) translate(-50%, 0);
transform-origin: 0% 50%;
}
.humburger.active span:nth-of-type(2) {
opacity: 0;
}
.humburger.active span:nth-of-type(3) {
transform: rotate(-45deg) translate(-50%, 0);
transform-origin: 0% 50%;
}
クリックしたらactiveを追加するようにする
document.addEventListener('DOMContentLoaded', function() {
document.getElementById("humburger").addEventListener("click", function() {
this.classList.toggle("active")
})
});
5.メニューを表示・非表示にする
元になるメニュー作り、CSSで配置や色などを決める。
クリックしたら右からnavが表示され、もう一度クリックすると閉じるようにする。(ドロワーメニュ-みたいにする)
<nav id="nav">
<ul>
<li><a href="">menu0</a></li>
<li><a href="">menu1</a></li>
<li><a href="">menu2</a></li>
<li><a href="">menu3</a></li>
<li><a href="">menu4</a></li>
</ul>
</nav>
nav {
position: fixed;
top: 0px;
right: -200px;
width: 180px;
height: 100%;
padding: 40px 30px 0 0;
opacity: 0;
transition: 0.4s;
visibility: hidden;
background-color: #ddd;
text-align: center;
z-index: -1;
}
nav.active {
opacity: 1;
visibility: visible;
right: 0;
}
a {
font-size: 2rem;
color: black;
}
li {
padding: 5px 0 10px 0;
padding-top: 20px;
}
4で書いたjavascriptに(navのactiveを追加する)
document.addEventListener('DOMContentLoaded', function() {
document.getElementById("humburger").addEventListener("click", function() {
this.classList.toggle("active");
document.getElementById("nav").classList.toggle("active");
})
});