【コピペで使用OK!】おしゃれなハンバーガーメニューのアイデア集

【コピペOK!】おしゃれなハンバーガーメニューのアイデア集
misa

こんにちは、ウェブデザインパレットのmisaです。

今回は、HTMLとCSS、Javascriptでハンバーガーメニューを実装する方法について解説します。

主にjQueryを使用しています。
jQueryのCDN最新バージョンはこちらからご確認ください。

Contents

左から出現するメニュー

misa

Web Design Pallet

HTML
<div class="header-container_01">
  <h1>Web Design Pallet</h1>
  <nav class="header__navi_01">
    <ul>
      <li><a href="/#">Home</a></li>
      <li><a href="/#">About</a></li>
      <li><a href="/#">Works</a></li>
      <li><a href="/#">Contact</a></li>
    </ul>
  </nav>
  <!-- メニューボタン -->
  <button class="sp-menu-btn_01">
    <span class="line"></span>
    <span class="line"></span>
    <span class="line"></span>
  </button>
</div>

 <!-- jQuery読み込み -->
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
CSS
.header-container_01 {
  position: relative;
  margin: 0 !important;
  height: 300px;
  font-family: serif;
}

.header__navi_01 {
  z-index: 1;
  position: absolute;
  top: 0;
  left: 0;
  background: #ada59c;
  width: 70%;
  height: 100vh;
  transform: translateX(-100%);
  transition: all 0.6s;
}

.header__navi_01.active {
  transform: translateX(0%);
}

.header__navi_01 ul {
  padding-top: 48px;
  text-align: center;
}

.header__navi_01 li {
  list-style: none;
  margin-bottom: 24px;
}

.header__navi_01 li a {
  color: #fff;
  text-decoration: none;
}

/* メニューボタン */
.sp-menu-btn_01 {
  background: #ada59c;
  border: none;
  position: absolute;
  right: 10px;
  top: 10px;
  width: 60px;
  height: 60px;
  cursor: pointer;
  z-index: 1000;
  border-radius: 50%;
}

.sp-menu-btn_01 .line {
  display: block;
  position: absolute;
  width: 30px;
  height: 1px;
  right: 15px;
  background: #fff;
  transition: 0.3s ease-in-out;
}

.sp-menu-btn_01 span:nth-child(1) {
  top: 20px;
}

.sp-menu-btn_01 span:nth-child(2) {
  top: 28px;
}

.sp-menu-btn_01 span:nth-child(3) {
  top: 36px;
}

/* メニューが開いているときのボタン */
.sp-menu-btn_01.active span:nth-child(1) {
  top: 28px;
  transform: rotate(-45deg);
}

.sp-menu-btn_01.active span:nth-child(2) {
  opacity: 0;
}

.sp-menu-btn_01.active span:nth-child(3) {
  top: 28px;
  transform: rotate(45deg);
}

.header-container_01 h1 {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 300px;
  font-weight: normal;
}
JavaScript
$(function () {
  $(".sp-menu-btn_01").click(function () {
    $(this).toggleClass("active");

    if ($(this).hasClass("active")) {
      $(".header__navi_01").addClass("active");
    } else {
      $(".header__navi_01").removeClass("active");
    }
  });
});

//メニュー内を閉じておく
$(function () {
  $(".header__navi_01 a[href]").click(function () {
    $(".header__navi_01").removeClass("active");
    $(".sp-menu-btn_01").removeClass("active");
  });
});

上から出現するメニュー

Web Design Pallet

HTML
<div class="header-container_02">
  <h1>Web Design Pallet</h1>
  <nav class="header__navi_02">
    <ul>
      <li><a href="/#">Home</a></li>
      <li><a href="/#">About</a></li>
      <li><a href="/#">Works</a></li>
      <li><a href="/#">Contact</a></li>
    </ul>
  </nav>
  <!-- メニューボタン -->
  <button class="sp-menu-btn_02">
    <span class="line"></span>
    <span class="line"></span>
  </button>
</div>

 <!-- jQuery読み込み -->
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
CSS
.header-container_02 {
  position: relative;
  margin: 0 !important;
  height: 300px;
  font-family: serif;
  background: #bdcece;
}

.header__navi_02 {
  z-index: 1;
  position: absolute;
  top: 0;
  left: 0;
  background: #fff;
  width: 100%;
  transform: translateY(-120%);
  transition: all 0.6s;
}

.header__navi_02.active {
  transform: translateY(0%);
}

.header__navi_02 ul {
  padding-top: 48px;
  text-align: center;
}

.header__navi_02 li {
  list-style: none;
  margin-bottom: 24px;
}

.header__navi_02 li a {
  color: #88afaf;
  text-decoration: none;
}

/* メニューボタン */
.sp-menu-btn_02 {
  background-color: transparent;
  border: none;
  position: absolute;
  right: 10px;
  top: 10px;
  width: 60px;
  height: 40px;
  cursor: pointer;
  z-index: 1000;
}

.sp-menu-btn_02 .line {
  display: block;
  position: absolute;
  height: 1px;
  right: 15px;
  background: #fff;
  transition: 0.3s ease-in-out;
}

.sp-menu-btn_02 span:nth-child(1) {
  top: 16px;
  width: 30px;
}

.sp-menu-btn_02 span:nth-child(2) {
  top: 24px;
  width: 20px;
}


/* メニューが開いているときのボタン */
.sp-menu-btn_02.active span:nth-child(1) {
  top: 24px;
  background: #88afaf;
  transform: rotate(-45deg);
}

.sp-menu-btn_02.active span:nth-child(2) {
  top: 24px;
  background: #88afaf;
  width: 30px;
  transform: rotate(45deg);
}

.header-container_02 h1 {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 300px;
  font-weight: normal;
}
JavaScript
$(function () {
  $(".sp-menu-btn_02").click(function () {
    $(this).toggleClass("active");

    if ($(this).hasClass("active")) {
      $(".header__navi_02").addClass("active");
    } else {
      $(".header__navi_02").removeClass("active");
    }
  });
});

//メニュー内を閉じておく
$(function () {
  $(".header__navi_02 a[href]").click(function () {
    $(".header__navi_02").removeClass("active");
    $(".sp-menu-btn_02").removeClass("active");
  });
});

右から出現するメニュー

Web Design Pallet

HTML
<div class="header-container_03">
  <h1>Web Design Pallet</h1>
  <nav class="header__navi_03">
    <ul>
      <li><a href="/#">Home</a></li>
      <li><a href="/#">About</a></li>
      <li><a href="/#">Works</a></li>
      <li><a href="/#">Contact</a></li>
    </ul>
  </nav>
  <!-- メニューボタン -->
  <button class="sp-menu-btn_03">
    <span class="line"></span>
    <span class="line"></span>
    <span class="menu">MENU</span>
  </button>
</div>

 <!-- jQuery読み込み -->
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
CSS
.header-container_03 {
  position: relative;
  margin: 0 !important;
  height: 300px;
  font-family: serif;
}

.header__navi_03 {
  z-index: 1;
  position: absolute;
  top: 0;
  right: 0;
  background: #d8dcb2;
  width: 70%;
  height: 100vh;
  transform: translateX(150%);
  transition: all 0.6s;
}

.header__navi_03.active {
  transform: translateX(0%);
}

.header__navi_03 ul {
  padding-top: 48px;
  text-align: center;
}

.header__navi_03 li {
  list-style: none;
  margin-bottom: 24px;
}

.header__navi_03 li a {
  color: #fff;
  text-decoration: none;
}

/* メニューボタン */
.sp-menu-btn_03 {
  background: transparent;
  color: #d8dcb2;
  border: none;
  position: absolute;
  left: 10px;
  top: 10px;
  width: 60px;
  height: 60px;
  cursor: pointer;
  z-index: 1000;
}

.sp-menu-btn_03 span {
  display: block;
  position: absolute;
  width: 33px;
  right: 15px;
  transition: 0.3s ease-in-out;
  font-size: 10px;
}

.sp-menu-btn_03 .line {
  height: 1px;
  background: #d8dcb2;
}

.sp-menu-btn_03 span:nth-child(1) {
  top: 20px;
}

.sp-menu-btn_03 span:nth-child(2) {
  top: 28px;
}

.sp-menu-btn_03 span:nth-child(3) {
  top: 36px;
}

/* メニューが開いているときのボタン */

.sp-menu-btn_03.active span:nth-child(1) {
  top: 28px;
  transform: rotate(-45deg);
}

.sp-menu-btn_03.active span:nth-child(2) {
  transform: rotate(45deg);
}

.sp-menu-btn_03.active .menu  {
  font-size:0;
}

.header-container_03 h1 {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 300px;
  font-weight: normal;
}
JavaScript
$(function () {
  $(".sp-menu-btn_03").click(function () {
    $(this).toggleClass("active");

    if ($(this).hasClass("active")) {
      $(".header__navi_03").addClass("active");
    } else {
      $(".header__navi_03").removeClass("active");
    }
  });
});

//メニュー内を閉じておく
$(function () {
  $(".header__navi_03 a[href]").click(function () {
    $(".header__navi_03").removeClass("active");
    $(".sp-menu-btn_03").removeClass("active");
  });
});

下から出現するメニュー

misa

こちらのメニューアイコンはFont Awesomeを使用しています

Web Design Pallet

HTML
<div class="header-container_04">
  <h1>Web Design Pallet</h1>
  <nav class="header__navi_04">
    <ul>
      <li><a href="/#">Home</a></li>
      <li><a href="/#">About</a></li>
      <li><a href="/#">Works</a></li>
      <li><a href="/#">Contact</a></li>
    </ul>
  </nav>
  <!-- メニューボタン -->
  <button class="sp-menu-btn_04">
    <span class="menu"><i class="fa-solid fa-ellipsis-vertical"></i></span>
  </button>
</div>

 <!-- jQuery読み込み -->
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
CSS
.header-container_04 {
  position: relative;
  margin: 0 !important;
  height: 300px;
  font-family: serif;
}

.header__navi_04 {
  z-index: 1;
  position: absolute;
  bottom: -20px;
  left: 0;
  background: #e1d1d1;
  width: 100%;
  transform: translateY(150%);
  transition: all 0.6s;
}

.header__navi_04.active {
  transform: translateY(0%);
}

.header__navi_04 ul {
  padding-top: 36px;
  text-align: center;
}

.header__navi_04 li {
  list-style: none;
  margin-bottom: 24px;
}

.header__navi_04 li a {
  color: #fff;
  text-decoration: none;
}

/* メニューボタン */
.sp-menu-btn_04 {
  background: transparent;
  color: #e1d1d1;
  border: none;
  position: absolute;
  right: 20px;
  top: 20px;
  width: 30px;
  height: 30px;
  cursor: pointer;
  z-index: 1000;
  transition: all 0.6s;
}

.sp-menu-btn_04 .menu {
  display: block;
  position: absolute;
  font-size:24px;
  top: 10%;
  left: 40%;
  line-height: 0;
}


/* メニューが開いているときのボタン */
.sp-menu-btn_04.active .menu {
  font-size: 0;
}

.sp-menu-btn_04.active .menu::after {
  content:'\f00d';
  font-size:24px;
  font-family: 'Font Awesome 6 Free';
  font-weight: 700;
  line-height: initial;
}

.header-container_04 h1 {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 300px;
  font-weight: normal;
}
JavaScript
$(function () {
  $(".sp-menu-btn_04").click(function () {
    $(this).toggleClass("active");

    if ($(this).hasClass("active")) {
      $(".header__navi_04").addClass("active");
    } else {
      $(".header__navi_04").removeClass("active");
    }
  });
});

//メニュー内を閉じておく
$(function () {
  $(".header__navi_04 a[href]").click(function () {
    $(".header__navi_04").removeClass("active");
    $(".sp-menu-btn_04").removeClass("active");
  });
});

まとめ

今回は、HTMLとCSS、Javascriptでハンバーガーメニューを実装する方法について解説しました。

ぜひ、コピー&カスタマイズして使ってみていただけたら嬉しいです^^

では、また~✨

ABOUT ME

現役インハウスWebデザイナー。
35歳、2児の母。
今までの経験を活かし、コーディングやWebデザインについての情報を発信しています。

Contents