バウンド

表示デモ

実装コード

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();

ポイント

大きいサイズの場合。

参考リンク