あなたに合った学習プランは?LINE適正コース診断はこちら プログラミングが全て無料で学習可能!
【コピペOK】初心者向けハンバーガーメニューの作り方(HTML/CSS/JavaScript) - 忍者CODEマガジン

【コピペOK】初心者向けハンバーガーメニューの作り方(HTML/CSS/JavaScript)

プログラミング言語の辞書

スマートフォンサイトやレスポンシブデザインでよく使われる「ハンバーガーメニュー」。「ハンバーガーメニューを作りたいけれど、実装方法が分からない」「コピペで使えるサンプルコードが欲しい」という方も多いのではないでしょうか。

この記事では、HTML・CSS・JavaScriptを使ったハンバーガーメニューの作り方を初心者向けに解説します。基本的な実装方法からアニメーションの付け方、カスタマイズ方法まで紹介するので、ぜひ参考にしてください。

おすすめのオンラインプログラミングスクール
忍者CODEのWeb制作コース:Webサイトを制作するために必要なスキルを学べる

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

ハンバーガーメニューとは、Webサイトやアプリで使用されるナビゲーションメニューの一種です。三本線(☰)のアイコンで表示されることが多く、その見た目がハンバーガーに似ていることから「ハンバーガーメニュー」と呼ばれています。

主にスマートフォンやタブレットなどの画面サイズが限られたデバイスで利用されており、メニュー項目をコンパクトにまとめられる点が特徴です。アイコンをタップまたはクリックすると、ナビゲーションメニューが表示される仕組みになっています。

近年ではモバイルサイトだけでなく、レスポンシブデザインを採用したWebサイトやWebアプリでも広く活用されています。限られた表示領域を有効活用できるため、ユーザーが快適にサイト内を移動できるナビゲーション手法として定着しています。

ハンバーガーメニューを使用するメリット

  • 画面スペースを節約できる
  • ナビゲーションをすっきり整理できる
  • スマートフォンやタブレットとの相性が良い
  • レスポンシブデザインに対応しやすい

ハンバーガーメニューは、ユーザー体験を損なうことなく多くのメニュー項目を管理できるため、現在のWeb制作において欠かせないUIパーツの一つです。

ハンバーガーメニューを作るために必要なもの

ハンバーガーメニューを実装するには、主に「HTML」「CSS」「JavaScript」の3つの技術を使用します。それぞれの役割を理解しておくことで、実装やカスタマイズがしやすくなります。

HTML

HTMLは、ハンバーガーメニューの構造を作成するために使用します。メニューボタンやナビゲーションメニューなどの要素を配置し、ページの骨組みを作ります。

CSS

CSSは、ハンバーガーメニューの見た目を整えるために使用します。三本線のアイコンを作成したり、メニューのレイアウトや色、アニメーションなどを設定したりできます。

JavaScript

JavaScriptは、ハンバーガーメニューの開閉を制御するために使用します。ボタンをクリックした際にメニューを表示・非表示に切り替える処理や、アニメーションの制御を実装できます。

本記事では、HTML・CSS・JavaScriptを使用して、実際に動作するハンバーガーメニューの作り方を解説します。サンプルコードを用意しているため、コピー&ペーストしながら学習を進めることも可能です。

【コピペOK】HTML/CSS・JavaScriptでハンバーガーメニューを実装する方法

ここからは、実際にハンバーガーメニューを実装する方法を解説します。 まずは完成イメージを確認したうえで、HTML・CSS・JavaScriptを順番に作成していきましょう。

今回作成するハンバーガーメニューは、以下の機能を備えています。

  • クリックでメニューを開閉できる
  • レスポンシブデザインに対応しやすい
  • アニメーション付きで視認性が高い
  • アクセシビリティを考慮したbuttonタグを使用

まずはHTMLでメニューの構造を作成します。

HTMLコード

以下のコードをHTMLファイルに記述してください。


<header class="header">
  <button
    class="hamburger-menu"
    aria-label="メニューを開く"
    aria-expanded="false"
    aria-controls="global-menu"
  >
    <span></span>
    <span></span>
    <span></span>
  </button>

  <nav id="global-menu" class="menu">
    <ul>
      <li><a href="#">ホーム</a></li>
      <li><a href="#">サービス</a></li>
      <li><a href="#">会社概要</a></li>
      <li><a href="#">お問い合わせ</a></li>
    </ul>
  </nav>
</header>

buttonタグを使用することで、キーボード操作やスクリーンリーダーにも対応できます。また、aria-expandedやaria-controlsを設定することで、アクセシビリティの向上にもつながります。

CSSコード

続いて、ハンバーガーメニューのデザインをCSSで整えます。以下のコードでは、三本線のアイコン表示やメニューのレイアウトを設定しています。


/* ヘッダー */
.header {
  position: relative;
}

/* ハンバーガーボタン */
.hamburger-menu {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 32px;
  height: 24px;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
}

/* 三本線 */
.hamburger-menu span {
  display: block;
  width: 100%;
  height: 3px;
  background-color: #333;
  border-radius: 2px;
  transition: all 0.3s ease;
}

/* ナビゲーションメニュー */
.menu {
  display: none;
  position: absolute;
  top: 50px;
  right: 0;
  min-width: 200px;
  background-color: #fff;
  border: 1px solid #ddd;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.menu ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.menu li {
  border-bottom: 1px solid #eee;
}

.menu li:last-child {
  border-bottom: none;
}

.menu a {
  display: block;
  padding: 12px 16px;
  color: #333;
  text-decoration: none;
}

.menu a:hover {
  background-color: #f5f5f5;
}

/* メニュー表示時 */
.menu.is-active {
  display: block;
}

この時点では、ハンバーガーメニューの見た目のみ完成しています。メニューをクリックしてもまだ開閉できないため、次はJavaScriptを使って表示・非表示を切り替える処理を実装しましょう。

JavaScriptコード

最後に、JavaScriptでハンバーガーメニューの開閉機能を実装します。以下のコードを追加することで、ボタンをクリックした際にメニューの表示・非表示を切り替えられます。


const hamburgerButton = document.querySelector('.hamburger-menu');
const menu = document.querySelector('.menu');

hamburgerButton.addEventListener('click', () => {
  const isExpanded =
    hamburgerButton.getAttribute('aria-expanded') === 'true';

  hamburgerButton.setAttribute(
    'aria-expanded',
    !isExpanded
  );

  menu.classList.toggle('is-active');
});

上記のコードでは、addEventListener()を使用してハンバーガーボタンのクリックイベントを監視しています。クリックされるたびにis-activeクラスを付け外しし、メニューの表示・非表示を切り替えています。

また、aria-expanded属性も同時に更新しているため、スクリーンリーダーを利用するユーザーにも現在の状態が正しく伝わります。アクセシビリティを考慮した実装は、ユーザー体験の向上だけでなくWebサイトの品質向上にもつながります。

実装結果

ここまでのHTML・CSS・JavaScriptを組み合わせることで、クリックで開閉できるハンバーガーメニューを実装できます。

次のセクションでは、さらに見栄えを良くするために、三本線から×マークへ変化するアニメーションの実装方法を解説します。

ハンバーガーメニューにアニメーションを追加する方法

ハンバーガーメニューは開閉機能だけでも十分に利用できますが、アニメーションを追加することでユーザーが現在の状態を把握しやすくなります。特に、三本線のアイコンを「×」マークへ変化させるアニメーションは多くのWebサイトで採用されており、視認性や操作性の向上につながります。

コーディングスキルを活かして「副業」を獲得するには?

忍者CODEが提供するWeb制作コースの副業・案件獲得保証プランでは、HTML、CSSだけでなくJavaScript、PHPと言った言語も学べるため、高単価な副業案件を獲得できるスキルを身につけられます。
現役クリエイターが学習のサポートをしてくれるため、学習中に分からないことがあれば、24時間無制限のチャットサポートでいつでも質問が可能です。
また、カリキュラムを受講完了した1ヶ月以内に5万円分の案件を必ずお渡ししています。副業をしたい方はぜひ忍者CODEをチェックしましょう!

三本線を×マークに変化させる

まずはJavaScriptでボタンにもis-activeクラスを付与するように変更します。


const hamburgerButton = document.querySelector('.hamburger-menu');
const menu = document.querySelector('.menu');

hamburgerButton.addEventListener('click', () => {
  const isExpanded =
    hamburgerButton.getAttribute('aria-expanded') === 'true';

  hamburgerButton.setAttribute(
    'aria-expanded',
    !isExpanded
  );

  hamburgerButton.classList.toggle('is-active');
  menu.classList.toggle('is-active');
});

続いて、以下のCSSを追加してください。


/* アニメーション設定 */
.hamburger-menu span {
  transition: all 0.3s ease;
}

/* 1本目の線 */
.hamburger-menu.is-active span:nth-child(1) {
  transform: translateY(10px) rotate(45deg);
}

/* 2本目の線 */
.hamburger-menu.is-active span:nth-child(2) {
  opacity: 0;
}

/* 3本目の線 */
.hamburger-menu.is-active span:nth-child(3) {
  transform: translateY(-10px) rotate(-45deg);
}

上記のコードを追加すると、メニューを開いた際に三本線のアイコンが×マークへ変化します。ユーザーが「現在メニューが開いている状態」であることを直感的に理解できるため、操作性の向上につながります。

次のセクションでは、CSSだけでハンバーガーメニューを作成する方法を解説します。

メニューをスライド表示させる

ハンバーガーメニューでは、メニューを単純に表示するだけでなく、横からスライド表示させるデザインもよく採用されています。スライドアニメーションを追加することで、メニューの開閉がより分かりやすくなり、ユーザー体験の向上につながります。

まずは、現在のメニュー表示用CSSを以下のコードに変更してください。


/* メニュー */
.menu {
  position: fixed;
  top: 0;
  right: -280px;
  width: 280px;
  height: 100vh;
  padding-top: 80px;
  background-color: #fff;
  box-shadow: -2px 0 10px rgba(0, 0, 0, 0.1);
  transition: right 0.3s ease;
}

/* メニュー表示時 */
.menu.is-active {
  right: 0;
}

上記のコードでは、初期状態でメニューを画面外へ配置し、is-activeクラスが付与された際に画面内へスライド表示する仕組みになっています。JavaScriptは前のセクションで作成したものをそのまま利用できます。


hamburgerButton.classList.toggle('is-active');
menu.classList.toggle('is-active');

これにより、ハンバーガーボタンをクリックすると、右側からナビゲーションメニューがスムーズに表示されるようになります。スマートフォン向けサイトでは、今回紹介したスライドメニューが広く採用されています。実務でも利用頻度の高い実装方法なので、ぜひ覚えておきましょう。

オススメ:HTML、CSSの問題集に無料で挑戦しよう!

HTML、CSSを勉強していると、調べれば分かることもありますが、実際に自分でアウトプットするのは難しいと感じたことはありませんか?
アウトプットするためのおすすめの方法は、
「問題解くこと」です。
忍者CODEのHTML、CSS 学習の無料問題集では、HTML、CSSに関する問題を100問以上用意しており、LINE登録するだけで解答を無料で確認できます!

ハンバーガーメニューをカスタマイズする方法

基本的なハンバーガーメニューが実装できたら、サイトのデザインに合わせて見た目や表示位置を調整してみましょう。ここでは、実務でもよく使われるカスタマイズ例として、メニューの色変更と右上固定の方法を紹介します。

メニューの色を変更する

メニューの背景色や文字色は、CSSのbackground-colorcolorを変更することで調整できます。


.menu {
  background-color: #333;
}

.menu a {
  color: #fff;
}

.menu a:hover {
  background-color: #444;
}

上記のように設定すると、背景がダークカラーのハンバーガーメニューになります。サイトのブランドカラーに合わせて変更すると、デザインに統一感を出せます。

ハンバーガーボタンを右上に固定する

スマートフォン向けサイトでは、ハンバーガーボタンを画面右上に固定するデザインもよく使われます。


.hamburger-menu {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1000;
}

position: fixed;を指定すると、画面をスクロールしてもハンバーガーボタンが右上に表示され続けます。ユーザーがいつでもメニューを開けるため、スマートフォンサイトの操作性を高められます。ボタンのクリック領域(タップターゲット)は、指で押しやすいように48px以上を確保しましょう

メニューをおしゃれに見せるポイント

ハンバーガーメニューは、余白や色、アニメーションを少し調整するだけでも印象が大きく変わります。

  • 背景色をサイトのテーマカラーに合わせる
  • メニュー項目の余白を広めに取る
  • ホバー時の色を変更する
  • スライドアニメーションを追加する

ただし、デザインを優先しすぎてメニューが見つけにくくなると、ユーザーにとって使いづらくなってしまいます。見た目だけでなく、押しやすさや読みやすさも意識してカスタマイズしましょう。

HTML、CSSを学んで「転職」を目指す方へ

忍者CODEが提供するWeb制作コースの転職支援プランでは、未経験からエンジニアへ転職するための充実したサポート体制を提供しています。現役クリエイターが学習のサポートをしてくれるため、学習中に分からないことがあれば、24時間無制限のチャットサポートでいつでも質問が可能です。
また、転職活動に関してはプロのキャリアアドバイザーのサポートを受けられ、ポートフォリオや履歴書の添削も行いますので、IT業界が未経験の方でも、安心して転職活動に臨むことができますよ!

ハンバーガーメニューに関するよくある質問

ハンバーガーメニューはCSSだけで作れますか?

はい、作成できます。HTMLのチェックボックス要素(inputタグ)とCSSの:checked疑似クラスを組み合わせることで、JavaScriptを使用せずにハンバーガーメニューを実装できます。

ただし、アニメーションや複雑な動作を追加したい場合は、JavaScriptを利用する方法が一般的です。

ハンバーガーメニューにJavaScriptは必須ですか?

必須ではありません。シンプルな開閉機能だけであればCSSのみでも実装可能です。

一方で、メニューの開閉状態を細かく制御したり、アクセシビリティを向上させたりする場合はJavaScriptを使用することをおすすめします。

ハンバーガーメニューはどのようなサイトで使われていますか?

ハンバーガーメニューは、スマートフォンサイトやレスポンシブデザインを採用したWebサイトで広く利用されています。

特に、メニュー項目が多いサイトや限られた画面スペースを有効活用したい場合に効果的です。

buttonタグを使う理由は何ですか?

ハンバーガーメニューはクリックして操作する要素であるため、divタグではなくbuttonタグを使用することが推奨されています。

buttonタグを使用することで、キーボード操作やスクリーンリーダーに対応しやすくなり、アクセシビリティの向上につながります。

まとめ

この記事では、HTML・CSS・JavaScriptを使ったハンバーガーメニューの作り方について解説しました。

  • HTMLでメニューの構造を作成する
  • CSSでデザインやレイアウトを整える
  • JavaScriptで開閉機能を実装する
  • アニメーションを追加して操作性を向上させる
  • 色や配置を変更してデザインをカスタマイズする

ハンバーガーメニューは、スマートフォンサイトやレスポンシブデザインに欠かせないUIパーツの一つです。基本的な実装方法を理解しておくことで、さまざまなWebサイトで応用できるようになります。まずは本記事で紹介したサンプルコードを実際に動かしながら、ハンバーガーメニューの仕組みを理解してみましょう。慣れてきたら、アニメーションやデザインのカスタマイズにも挑戦してみてください。

忍者CODEの学習は“実践型”!
だから
結果を出せる!

●初めてHTML/CSSを学習する方
はじめての方でも安心してHTML/CSSを学習できるように、基礎知識から実践的な課題までプロへのロードマップが分かりやすいカリキュラムを採用。
●副業に有利なことを探されている方
∟未経験からでもスキルを習得できる“実践的カリキュラム”と、学習だけでなく受講後もプロのメンターがマンツーマンで徹底的に副業サポートまで行い、受講後は必ず案件をご紹介するプランの副業・案件”保証”プランもあります。
●業界最安級の受講費用で始めやすい
∟税込9,800円から始められる忍者CODEのプログラミングスクールは業界でも最安級!それでも学習し放題、チャットサポートは無期限・無制限と、プロのメンターとエンジニアを筆頭に、皆さんを徹底的にサポートします。

まずは自分の適性プラン診断から!
適正コース診断

<!–\最短1時間後の当日予約も可能!/無料メンター相談のご予約–>