ハンバーガーボタンからドロワーメニューを開く方法【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

ハンバーガーボタンからドロワーメニューを開く方法

ハンバーガーボタンからドロワーメニューを開く方法を紹介します。このサンプルでは、3本線で表示したハンバーガーボタンをクリックすると、画面左側からドロワーメニューがスライドして表示されます。通常のテキストボタンではなく、Webサイトやスマートフォン向けページでよく使われるハンバーガーボタンをメニューの起点として利用できる構成です。

ヘッダーのナビゲーション、スマートフォン向けメニュー、会員サイトのメニュー、管理画面のナビゲーションなど、限られた表示領域から必要なときだけメニューを開きたい場面に利用できます。ドロワーメニューを開いている間はページ側へ半透明の背景を表示し、メニュー内の「閉じる」ボタンをクリックすると閉じます。背景部分をクリックしても閉じないため、閉じる操作は「閉じる」ボタンだけに統一しています。

HTMLではハンバーガーボタン、ドロワーメニューの見出し、メニュー項目、閉じるボタンの文字を変更できます。CSSではハンバーガーボタンのサイズや3本線の太さ、ドロワーメニューの横幅、余白、背景色、メニュー項目のデザイン、スライド速度などを調整できます。JavaScriptではis-activeクラスの追加と削除によってドロワーメニューと半透明背景を切り替えます。画面幅640px以下では余白を小さくしているため、スマートフォン・タブレット・PCで利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

ハンバーガーボタン

3本線のボタンをクリックすると、左側からメニューが表示されます。

3本線のハンバーガーボタンをクリックすると、画面左側からドロワーメニューが表示されます。「閉じる」ボタンをクリックするとメニューが閉じます。半透明の背景をクリックしてもドロワーメニューは閉じません。

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

<!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>

  <!-- サンプル表示エリア -->
  <div class="hamburger-drawer-menu_wrap">

    <!-- タイトル -->
    <div class="hamburger-drawer-menu_title">
      ハンバーガーボタン
    </div>

    <!-- 説明文 -->
    <p class="hamburger-drawer-menu_text">
      3本線のボタンをクリックすると、左側からメニューが表示されます。
    </p>

    <!-- ハンバーガーボタン -->
    <button
      class="hamburger-drawer-menu_open"
      type="button"
      aria-label="メニューを開く"
      data-hamburger-drawer-open="">

      <!-- 3本線 -->
      <span class="hamburger-drawer-menu_icon" aria-hidden="true">
        <span></span>
        <span></span>
        <span></span>
      </span>

    </button>

  </div>

  <!-- ドロワーメニュー表示中の半透明背景 -->
  <div
    class="hamburger-drawer-menu_overlay"
    data-hamburger-drawer-overlay=""></div>

  <!-- ドロワーメニュー本体 -->
  <div
    class="hamburger-drawer-menu_drawer"
    data-hamburger-drawer=""
    role="dialog"
    aria-modal="true"
    aria-labelledby="hamburger-drawer-menu-heading">

    <!-- ドロワーメニューの見出し -->
    <div
      class="hamburger-drawer-menu_heading"
      id="hamburger-drawer-menu-heading">
      メニュー
    </div>

    <!-- メニュー項目 -->
    <nav
      class="hamburger-drawer-menu_nav"
      aria-label="メインメニュー">

      <a class="hamburger-drawer-menu_link" href="#">
        ホーム
      </a>

      <a class="hamburger-drawer-menu_link" href="#">
        サービス
      </a>

      <a class="hamburger-drawer-menu_link" href="#">
        お問い合わせ
      </a>

    </nav>

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

  </div>

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

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されており、3本線のハンバーガーボタンをクリックすると画面左側からドロワーメニューが表示されます。HTMLでハンバーガーボタンとメニュー項目を配置し、CSSで3本線のデザインやドロワーメニューの表示位置を設定し、JavaScriptでメニューの開閉を制御します。

ハンバーガーボタンは3つのspan要素をCSSで横線として表示する構成です。画像やアイコンライブラリを使用していないため、線の長さや太さ、間隔、ボタンの大きさなどをstyle.cssだけで変更できます。

ドロワーメニューを開くとページ側へ半透明の背景が表示され、「閉じる」ボタンをクリックするとメニューと背景が非表示になります。半透明の背景部分には閉じる処理を設定していないため、背景をクリックしてもドロワーメニューは閉じません。

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

各ファイルの役割
index.html
ハンバーガーボタン、半透明背景、ドロワーメニュー、メニュー項目、閉じるボタンを配置しています。ハンバーガーボタンの3本線は3つのspan要素で構成しています。メニューの見出しやリンク文字、リンク先などもこのファイルで変更できます。

style.css
サンプル表示エリア、ハンバーガーボタン、3本線、半透明背景、ドロワーメニュー、メニューリンク、閉じるボタンのデザインを設定しています。通常時はドロワーメニューを画面左側へ隠し、is-activeクラスが追加されると画面内へスライドして表示します。

script.js
ハンバーガーボタンと閉じるボタンによるドロワーメニューの開閉を制御しています。ハンバーガーボタンをクリックするとドロワーメニューと半透明背景へis-activeクラスを追加し、「閉じる」をクリックするとクラスを削除します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置してください。3つのファイルは同じ階層へ保存します。準備ができたらsample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsを読み込むため、追加のJavaScriptライブラリやアイコン画像は必要ありません。

3本線のハンバーガーボタンをクリックすると、画面左側からドロワーメニューが表示されます。メニュー内には「ホーム」「サービス」「お問い合わせ」のリンクがあり、「閉じる」ボタンをクリックするとドロワーメニューが閉じます。実際のサイトで使用する場合は、index.html内の各href="#"を移動先のURLへ変更してください。

カスタマイズできる内容
index.htmlではハンバーガーボタン、ドロワーメニューの見出し、メニュー項目、リンク先、「閉じる」ボタンの文字を変更できます。メニュー項目を増やす場合は、hamburger-drawer-menu_linkクラスを付けたリンクをnav要素内へ追加します。

style.cssではハンバーガーボタンの大きさや色、3本線の長さ・太さ・間隔、ドロワーメニューの横幅や余白、半透明背景の濃さ、メニュー項目の背景色、角丸、影、スライド速度などを変更できます。

数値調整
style.css
max-width:700px;
サンプル表示エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

width:48px; height:48px;
ハンバーガーボタンの横幅と高さです。値を大きくするとボタン全体が大きくなり、小さくするとコンパクトになります。

width:24px;
ハンバーガーボタン内に表示する3本線の横幅です。値を大きくすると線が長くなります。

gap:5px;
3本線同士の間隔です。値を大きくすると線の間隔が広がり、小さくすると狭くなります。

height:2px;
ハンバーガーボタンの線の太さです。値を大きくすると線が太くなります。

background:rgba(15,23,42,.35);
ドロワーメニュー表示中の半透明背景です。.35を大きくすると背景が濃くなり、小さくすると薄くなります。

width:320px;
ドロワーメニューの横幅です。値を大きくするとメニューが横に広がり、小さくするとコンパクトになります。

max-width:85%;
ドロワーメニューが画面幅に対して占める最大幅です。狭い画面でドロワーメニューが画面内へ収まるようにしています。

padding:32px 24px;
ドロワーメニューの内側余白です。上下の32pxと左右の24pxを変更すると、メニュー内容と画面端との間隔を調整できます。

transform:translateX(calc(-100% - 40px));
閉じている状態のドロワーメニューを画面左側へ隠す位置です。40pxを大きくすると、さらに左側へ移動します。

transition:transform .3s ease, visibility .3s ease;
ドロワーメニューを開閉する時間です。.3sを大きくするとゆっくり、小さくすると速く切り替わります。

gap:10px;
ドロワーメニュー内の各メニュー項目の間隔です。値を大きくすると項目同士の間隔が広がります。

padding:14px 16px;
各メニューリンクの内側余白です。上下の14pxを大きくすると項目の高さが増え、左右の16pxを大きくすると文字と端の間隔が広がります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではサンプル表示エリアへwidth:100%max-width:700pxを設定し、ドロワーメニューにはwidth:320pxmax-width:85%を設定しています。画面が狭い場合はドロワーメニューの横幅が自動的に縮小されます。

画面幅640px以下では、サンプル表示エリアをpadding:24px 18px;、ドロワーメニューもpadding:24px 18px;へ変更して左右の余白を抑えています。スマートフォン・タブレット・PCの画面幅に合わせてハンバーガーボタンとドロワーメニューを利用できます。


こちらもおすすめ


コメント