表示デモ
実装コード
HTML
<div class="demo-wrap">
<button class="hamburger bounce-cross">
<span></span><span></span><span></span>
</button>
</div>
CSS
@charset "utf-8";
/* サイト共通設定 */
:root {
--primary-text-color: #2A3140;
}
html {
font-size: 62.5%;
}
.demo-wrap {
display: flex;
justify-content: center;
padding: 50px;
}
/* ハンバーガーメニュー共通設定 */
.hamburger {
display: inline-block;
cursor: pointer;
width: 34px;
height: 20px;
position: relative;
border: none;
background-color: transparent;
}
.hamburger span {
position: absolute;
left: 0;
width: 100%;
height: 3px;
background: var(--primary-text-color);
border-radius: 2px;
transition: all .25s ease;
}
.hamburger span:nth-child(1) {
top: 0;
}
.hamburger span:nth-child(2) {
top: 50%;
transform: translateY(-50%);
}
.hamburger span:nth-child(3) {
bottom: 0;
}
/* 変化 */
.hamburger.bounce-cross span {
transition: all 0.4s cubic-bezier(.68,-0.55,.27,1.55);
}
.hamburger.bounce-cross.open span:nth-child(1) {
transform: rotate(45deg) translate(7px, 5px);
}
.hamburger.bounce-cross.open span:nth-child(2) {
opacity: 0;
}
.hamburger.bounce-cross.open span:nth-child(3) {
transform: rotate(-45deg) translate(7px, -6px);
}
JavaScript
"use strict";
function toggleHamburger() {
/* ハンバーガー */
document.querySelectorAll('.hamburger').forEach(el => {
el.addEventListener('click', e => {
e.currentTarget.classList.toggle('open');
});
});
}
toggleHamburger();
ポイント
大きいサイズの場合。