0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HP作成備忘録:ハンバーガーメニューを右上に設置してスマホ対応しました〜実装コード付き〜

Last updated at Posted at 2025-03-23

はじめに

今回は、自作のWebサイトにハンバーガーメニューを右上に設置し、スマートフォンでの表示に対応した実装例をご紹介します。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

ナビゲーションバーが画面幅に収まりきらず崩れてしまう状況を改善するために、レスポンシブ対応の一環として導入しました。

書こうと思ったきっかけ

きっかけは、自分のスマホでWebサイトを確認したときに、「メニューが重なって読めない」「リンクが押しにくい」と感じたことでした。

PCでは問題なく表示されていたナビゲーションも、スマホではUIの邪魔になっていました。

そこで、「よく見るあの三本線(=ハンバーガーメニュー)を入れてみよう」と思い、実装に挑戦しました。

ハンバーガーメニューとは?

ハンバーガーメニューは、3本の横線で構成されたアイコンで、クリックやタップすることでメニューの開閉を行う仕組みです。
特にスマートフォンなど画面が狭いデバイスで、ナビゲーションをコンパクトにまとめておきたいときに便利です。

内容について(実装コード紹介)

HTML

<header>
  <div class="header-title">
    <img src="images/logo1.png" alt="ロゴ" style="height: 50px; margin-right: 10px;">
  </div>

  <!-- ハンバーガーメニュー -->
  <div class="hamburger" id="hamburger">
    <span></span>
    <span></span>
    <span></span>
  </div>

  <!-- ナビゲーション -->
  <nav class="nav-menu" id="nav-menu">
    <a href="index.html">HOME</a>
    <a href="greeting.html">代表挨拶</a>
    <a href="office.html">事務所案内</a>
    <a href="services.html">サービス案内</a>
    <a href="pricing.html">料金案内</a>
    <a href="contact.html">お問い合わせ</a>
    <a href="support-a.html">就労支援A型</a>
  </nav>
</header>

CSS(style2.css に追加)

/* ハンバーガーアイコン */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 25px;
  height: 20px;
  cursor: pointer;
  position: absolute;
  top: 25px;
  right: 20px;
  z-index: 1100;
}
.hamburger span {
  height: 3px;
  background: #333;
  border-radius: 2px;
  transition: 0.3s;
}

/* ハンバーガー開閉時のアニメーション */
.hamburger.open span:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}
.hamburger.open span:nth-child(2) {
  opacity: 0;
}
.hamburger.open span:nth-child(3) {
  transform: rotate(-45deg) translate(5px, -5px);
}

/* ナビゲーションの表示切替 */
.nav-menu {
  display: flex;
  gap: 15px;
}
@media (max-width: 768px) {
  .nav-menu {
    display: none;
    flex-direction: column;
    background: white;
    position: absolute;
    top: 70px;
    right: 20px;
    padding: 10px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
    z-index: 1000;
  }
  .nav-menu.active {
    display: flex;
  }
  .hamburger {
    display: flex;
  }
}

JavaScript(HTMLの末尾に追加)

<script>
  const hamburger = document.getElementById('hamburger');
  const navMenu = document.getElementById('nav-menu');

  hamburger.addEventListener('click', () => {
    hamburger.classList.toggle('open');
    navMenu.classList.toggle('active');
  });
</script>

まとめ

ハンバーガーメニューの導入により、スマートフォンなどの小さな画面でも快適に操作できるナビゲーションを実現できました。

特にスマホユーザーの閲覧体験を損なわないUI設計は、今後のサイト制作においても重要だと感じています。

今回は基本的な開閉機能のみでしたが、アニメーションやARIA属性の追加など、さらなる改善にも挑戦していきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?