ハンバーガーメニュー

ハンバーガーメニューは、モバイルサイトやレスポンシブデザインでよく使用されるメニュー形式で
クリックするとナビゲーションメニューが表示されます。

ハンバーガーメニュー
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>ハンバーガーメニューについて</title>
    <link rel="stylesheet" href="./main.css" />
  </head>
  <body>
    <div id="nav_container">
      <div class="hamburger" id="hamburger_menu">
        <div class="bar"></div>
        <div class="bar"></div>
        <div class="bar"></div>
      </div>
      <nav id="nav_menu" class="hidden">
        <ul>
          <li><a href="#">ホーム</a></li>
          <li><a href="#">サービス</a></li>
          <li><a href="#">お問い合わせ</a></li>
          <li><a href="#">会社概要</a></li>
        </ul>
      </nav>
    </div>
    <script src="./main.js"></script>
  </body>
</html>
// ページの読み込みが完了
document.addEventListener("DOMContentLoaded", function () {
  // ハンバーガーメニューの要素を取得
  const hamburgerMenu = document.getElementById("hamburger_menu");
  const navMenu = document.getElementById("nav_menu");

  // ハンバーガーメニューがクリックされた時のイベントハンドラ
  hamburgerMenu.addEventListener("click", function () {
    // ナビゲーションメニューの表示・非表示を切り替え
    navMenu.classList.toggle("hidden");
    // ハンバーガーメニューのアニメーションを切り替え
    hamburgerMenu.classList.toggle("open");
  });
});
#nav_container {
  position: relative;
}

.hamburger {
  width: 30px;
  height: 25px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  cursor: pointer;
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 1000;
}

.hamburger .bar {
  width: 100%;
  height: 3px;
  background-color: #007bff; /* 青系の色に変更 */
  transition: all 0.3s ease;
}

#nav_menu {
  position: fixed;
  top: 0;
  right: 0;
  width: 40%;
  height: 100%;
  background-color: rgba(173, 216, 230, 0.95); /* 薄い水色系に変更 */
  color: #333; /* 文字色をダークカラーに変更 */
  padding-top: 60px;
  padding-left: 20px;
  box-shadow: -2px 0 5px rgba(0, 0, 0, 0.5);
  transition: transform 0.3s ease;
  z-index: 999;
}

#nav_menu.hidden {
  transform: translateX(100%);
}

#nav_menu ul {
  list-style-type: none;
  padding: 0;
}

#nav_menu ul li {
  margin: 20px 0;
}

#nav_menu ul li a {
  color: #333; /* 文字色をダークカラーに変更 */
  text-decoration: none;
  font-size: 1.2em;
  display: block;
  padding: 10px 0;
  border-bottom: 1px solid rgba(51, 51, 51, 0.3); /* ボーダー色を調整 */
  transition: color 0.3s ease;
}

#nav_menu ul li a:hover {
  color: #ff9800; /* 落ち着いたアクセントカラー */
}

.hamburger.open .bar:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.hamburger.open .bar:nth-child(2) {
  opacity: 0;
}

.hamburger.open .bar:nth-child(3) {
  transform: rotate(-45deg) translate(10px, -10px);
}