ハンバーガーボタンで開閉するドロワーメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

ハンバーガーボタンで開閉するドロワーメニューの作り方

ハンバーガーボタンで開閉するドロワーメニューの作り方を紹介します。画面左上や右上によく配置される三本線のハンバーガーボタンをクリックすると、画面の端からドロワーメニューがスライド表示され、もう一度ボタンや閉じるボタンを押すことでメニューを閉じられるサンプルです。

スマートフォンサイトやタブレット向けのナビゲーションはもちろん、PCサイトでもヘッダーをすっきり見せたい場合に便利です。HTML・CSS・JavaScriptのみで実装しているため、ライブラリを使わずにそのまま導入できます。

ボタンの位置や色、メニュー項目、ドロワーの幅、アニメーション速度などは自由に変更できます。Webサイトや管理画面、ポートフォリオなど、さまざまなレイアウトへ組み込みやすいシンプルな構成になっています。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
サンプルコードの利用・改変は自己責任でお願いいたします。

デモ

ハンバーガーメニュー

ハンバーガーボタンをクリックするとドロワーメニューが表示されます。

ハンバーガーボタンをクリックするとドロワーメニューが表示されます。閉じるボタンまたは背景をクリックするとメニューを閉じられます。


コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>ハンバーガーボタンで開閉するドロワーメニュー</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- ドロワーメニューを開く操作エリア -->
  <main class="drawer-menu-hamburger-button_wrap">

    <!-- 操作エリア上部 -->
    <div class="drawer-menu-hamburger-button_header">

      <!-- 操作エリアのタイトル -->
      <div class="drawer-menu-hamburger-button_title">
        ハンバーガーメニュー
      </div>

      <!-- ドロワーメニューを開くハンバーガーボタン -->
      <button
        class="drawer-menu-hamburger-button_open"
        type="button"
        data-drawer-menu-hamburger-button-open
        aria-label="ドロワーメニューを開く"
        aria-expanded="false">

        <!-- ハンバーガーアイコンの1本目 -->
        <span class="drawer-menu-hamburger-button_line"></span>

        <!-- ハンバーガーアイコンの2本目 -->
        <span class="drawer-menu-hamburger-button_line"></span>

        <!-- ハンバーガーアイコンの3本目 -->
        <span class="drawer-menu-hamburger-button_line"></span>

      </button>

    </div>

    <!-- 操作エリアの説明文 -->
    <p class="drawer-menu-hamburger-button_text">
      ハンバーガーボタンをクリックすると、画面左側からドロワーメニューを表示します。
    </p>

  </main>

  <!-- ドロワーメニュー表示中の背景 -->
  <div
    class="drawer-menu-hamburger-button_overlay"
    data-drawer-menu-hamburger-button-overlay>
  </div>

  <!-- ドロワーメニュー本体 -->
  <aside
    class="drawer-menu-hamburger-button_drawer"
    data-drawer-menu-hamburger-button-drawer
    aria-hidden="true">

    <!-- ドロワーメニュー上部 -->
    <div class="drawer-menu-hamburger-button_drawer-header">

      <!-- ドロワーメニューのタイトル -->
      <div class="drawer-menu-hamburger-button_heading">
        メニュー
      </div>

      <!-- ドロワーメニューを閉じるボタン -->
      <button
        class="drawer-menu-hamburger-button_close"
        type="button"
        data-drawer-menu-hamburger-button-close
        aria-label="ドロワーメニューを閉じる">
      </button>

    </div>

    <!-- ナビゲーションメニュー -->
    <nav
      class="drawer-menu-hamburger-button_nav"
      aria-label="メインメニュー">

      <!-- ホームへのリンク -->
      <a
        class="drawer-menu-hamburger-button_link"
        href="#home"
        data-drawer-menu-hamburger-button-link>
        ホーム
      </a>

      <!-- サービスへのリンク -->
      <a
        class="drawer-menu-hamburger-button_link"
        href="#service"
        data-drawer-menu-hamburger-button-link>
        サービス
      </a>

      <!-- お知らせへのリンク -->
      <a
        class="drawer-menu-hamburger-button_link"
        href="#news"
        data-drawer-menu-hamburger-button-link>
        お知らせ
      </a>

      <!-- お問い合わせへのリンク -->
      <a
        class="drawer-menu-hamburger-button_link"
        href="#contact"
        data-drawer-menu-hamburger-button-link>
        お問い合わせ
      </a>

    </nav>

  </aside>

  <!-- JavaScriptファイルを読み込み -->
  <script src="script.js"></script>

</body>
</html>

ファイル構成と設置方法

このサンプルは、HTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではハンバーガーボタン、背景オーバーレイ、ドロワーメニュー、閉じるボタン、ナビゲーション項目を配置しています。CSSではハンバーガーアイコンの形やドロワーメニューのレイアウト、JavaScriptでは開閉処理を設定しています。

ハンバーガーボタンをクリックすると、背景オーバーレイが表示され、ドロワーメニューが画面左側からスライドします。閉じるボタン、背景部分、またはメニュー項目をクリックするとドロワーメニューが閉じます。

ハンバーガーボタンの色やサイズ、ドロワーメニューの横幅、メニュー項目、背景の暗さ、開閉速度は各ファイル内で変更できます。必要な3ファイルを同じフォルダへ保存するだけで動作します。

sample/
├── index.html
├── style.css
└── script.js

各ファイルの役割
index.html
ハンバーガーボタン、説明文、背景オーバーレイ、ドロワーメニュー、閉じるボタン、ナビゲーション項目を配置しています。タイトル、説明文、メニュー名、リンク先を編集すると表示内容が変わります。

style.css
ページ全体、操作エリア、ハンバーガーボタン、3本線、背景オーバーレイ、ドロワーメニュー、閉じるボタン、ナビゲーションリンクのデザインを設定しています。色、サイズ、余白、角丸、影、開閉速度を変更できます。

script.js
ハンバーガーボタンをクリックしたときの表示処理と、閉じるボタン、背景部分、メニュー項目をクリックしたときの非表示処理を設定しています。aria-expandedとaria-hiddenも開閉状態に合わせて更新します。

設置方法・使い方
sampleフォルダ内へindex.html、style.css、script.jsを配置します。3ファイルは同じ階層へ保存してください。

sample/index.htmlをブラウザで開きます。右側のハンバーガーボタンをクリックすると、画面左側からドロワーメニューが表示されます。閉じるボタン、背景部分、またはメニュー項目をクリックすると閉じます。

カスタマイズできる内容
index.htmlでは、操作エリアのタイトル、説明文、ドロワーメニューのタイトル、メニュー項目、リンク先を変更できます。

style.cssでは、ハンバーガーボタンの背景色、3本線の色や太さ、ボタンサイズ、ドロワーメニューの横幅、背景色、余白、角丸、影、オーバーレイの暗さ、開閉速度を変更できます。

script.jsでは、開閉対象となる要素や、どの操作でドロワーメニューを閉じるかを変更できます。

数値調整
style.css
width:52px;height:52px;
ハンバーガーボタンの横幅と高さです。値を大きくするとボタンが大きくなり、小さくすると小さくなります。

style.css
height:3px;
ハンバーガーアイコンを構成する3本線の太さです。値を大きくすると線が太くなります。

style.css
gap:6px;
ハンバーガーアイコンの3本線同士の間隔です。値を大きくすると線の間隔が広がります。

style.css
width:320px;
ドロワーメニューの横幅です。値を大きくすると幅が広くなり、小さくすると狭くなります。

style.css
max-width:85%;
画面幅に対するドロワーメニューの最大幅です。小さい画面では画面幅の85%以内に収まります。

style.css
transition:transform .35s ease;
0.35秒でドロワーメニューが開閉します。値を大きくするとゆっくり、小さくすると速く動きます。

style.css
opacity .3s
0.3秒で背景オーバーレイが表示・非表示になります。値を変更するとフェード速度が変わります。

style.css
background:rgba(15,23,42,.6);
0.6は背景オーバーレイの暗さです。値を大きくすると暗くなり、小さくすると明るくなります。

レスポンシブ対応
style.cssのwidth:100%、max-width:700px、max-width:85%を使用し、画面幅に合わせて操作エリアとドロワーメニューが縮小されます。

画面幅640px以下ではmedia queryによってページ、操作エリア、ドロワーメニューの余白とタイトルサイズを調整しています。スマートフォン・タブレット・PCで利用できます。



コメント