ピュアなJavaScriptを使用してサンプルのようなハンバーガーメニューを作りました。
使えたらコピペしてください。
解説
まずHTMLとSCSSでデフォルトの状態を作成します。
Codepen埋め込み内にある.containerはハンバーガーメニューを上下中央に配置するための要素なのでここでは省きます。
<div class="menu-btn">
<span></span>
<span></span>
<span></span>
</div>
.menu-btn {
position: relative;
width: 80px;
height: 80px;
background: #000;
cursor: pointer;
span {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: block;
width: 50px;
height: 2px;
background: #fff;
transition: 0.3s ease transform, 0.3s ease opacity;
&:first-child {
transform: translate(-50%, -13px);
}
&:last-child {
transform: translate(-50%, 12px);
}
}
&.active {
span {
&:first-child {
transform: translate(-50%, 0) rotate(
45deg);
}
&:nth-child(2) {
opacity: 0;
}
&:last-child {
transform: translate(-50%, 0) rotate(
-45deg);
}
}
}
}
次に.menu-btnに任意のクラス(ここでは.active)を付与したときの状態を作成します。
(下の埋め込みはキャプチャ画像です。)
続いてJavaScriptで.menu-btnをクリックした際に.activeがON/OFFするようにしてみましょう。
const menuBtn = document.querySelector('.menu-btn');
menuBtn.addEventListener('click', function() {
this.classList.toggle('active');
});
これで完成です!
ほぼCSSでしたね👍