見出し付きドロワーメニューを作る方法【HTML/CSS/JavaScript・サンプルコード付き】 

ドロワーメニュー

見出し付きドロワーメニューを作る方法

見出し付きドロワーメニューを作る方法を紹介します。このサンプルでは、ドロワーメニュー内の項目を見出しごとにグループ分けして表示するレイアウトをHTML・CSS・JavaScriptで実装します。「メニューを開く」ボタンをクリックすると画面左側からドロワーメニューが表示され、各セクションを見やすく整理した状態でメニューを表示できます。

メニュー項目が多いWebサイトでは、関連するリンクを見出しごとにまとめることで目的のページを探しやすくなります。企業サイト、管理画面、会員サイト、ECサイトなど、カテゴリーごとにリンクを整理したい場面で利用しやすい構成です。

見出し名、メニュー項目、リンク先URL、配色、ドロワーメニューの横幅、余白、区切り線、角丸、影、表示アニメーションの速度などを自由に変更できます。画面幅640px以下では画面幅いっぱいに表示されるため、スマートフォン・タブレット・PCでも快適に利用できます。

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

デモ

見出し付きドロワーメニュー

見出しごとにメニューを整理したドロワーメニューです。

「メニューを開く」をクリックすると、見出しごとに整理されたドロワーメニューが表示されます。背景または「閉じる」ボタンをクリックするとメニューを閉じる動作を確認できます。

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

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

<head>

  <!-- 文字コードをUTF-8に設定 -->
  <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="section-heading-drawer-menu_wrap">

    <!-- 案内エリアのタイトル -->
    <div class="section-heading-drawer-menu_title">
      見出し付きドロワーメニュー
    </div>

    <!-- ドロワーメニューの説明文 -->
    <p class="section-heading-drawer-menu_text">
      見出しごとにメニュー項目を整理したドロワーメニューです。
    </p>

    <!-- ドロワーメニューを開くボタン -->
    <button
      class="section-heading-drawer-menu_open"
      type="button"
      data-section-heading-drawer-open>
      メニューを開く
    </button>

  </main>

  <!-- ドロワーメニュー表示時の背景 -->
  <div
    class="section-heading-drawer-menu_overlay"
    data-section-heading-drawer-overlay
    aria-hidden="true">

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

      <!-- ドロワーメニュー全体のタイトル -->
      <div
        class="section-heading-drawer-menu_drawer-title"
        id="section-heading-drawer-menu-title">
        メニュー
      </div>

      <!-- メインメニューのグループ -->
      <div class="section-heading-drawer-menu_group">

        <!-- メインメニューの見出し -->
        <div class="section-heading-drawer-menu_group-title">
          メインメニュー
        </div>

        <!--
          href属性の#をホームページのURLへ変更する
          「ホーム」を表示したいメニュー名へ変更できる
        -->
        <a href="#">ホーム</a>

        <!--
          href属性の#をサービスページのURLへ変更する
          「サービス」を表示したいメニュー名へ変更できる
        -->
        <a href="#">サービス</a>

        <!--
          href属性の#をお知らせページのURLへ変更する
          「お知らせ」を表示したいメニュー名へ変更できる
        -->
        <a href="#">お知らせ</a>

      </div>

      <!-- サポートメニューのグループ -->
      <div class="section-heading-drawer-menu_group">

        <!-- サポートメニューの見出し -->
        <div class="section-heading-drawer-menu_group-title">
          サポート
        </div>

        <!--
          href属性の#をよくある質問ページのURLへ変更する
          「よくある質問」を表示したいメニュー名へ変更できる
        -->
        <a href="#">よくある質問</a>

        <!--
          href属性の#をお問い合わせページのURLへ変更する
          「お問い合わせ」を表示したいメニュー名へ変更できる
        -->
        <a href="#">お問い合わせ</a>

      </div>

      <!-- アカウントメニューのグループ -->
      <div class="section-heading-drawer-menu_group">

        <!-- アカウントメニューの見出し -->
        <div class="section-heading-drawer-menu_group-title">
          アカウント
        </div>

        <!--
          href属性の#をログインページのURLへ変更する
          「ログイン」を表示したいメニュー名へ変更できる
        -->
        <a href="#">ログイン</a>

        <!--
          href属性の#を設定ページのURLへ変更する
          「設定」を表示したいメニュー名へ変更できる
        -->
        <a href="#">設定</a>

      </div>

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

    </aside>

  </div>

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

</body>

</html>

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。ドロワーメニュー内のリンクを見出しごとに整理して表示できる構成で、HTMLでレイアウト、CSSでデザインとアニメーション、JavaScriptで開閉処理を実装しています。

メニューを開くと「メインメニュー」「サポート」「アカウント」などの見出しごとにリンクが表示されるため、項目数が多いサイトでも目的のページを見つけやすくなります。企業サイト、管理画面、ECサイト、会員サイトなど幅広い用途で利用できます。

見出し名、メニュー項目、リンク先URL、配色、横幅、余白、区切り線、角丸、影、表示アニメーションの速度などを自由に変更できます。画面幅640px以下では横幅いっぱいに表示されるため、スマートフォン・タブレット・PCでも利用できます。

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

各ファイルの役割
index.html
ドロワーメニュー全体の構造、見出し、メニュー項目、開閉ボタンを配置しています。見出し名やメニュー名、リンク先URLを自由に変更できます。

style.css
ページ全体、背景オーバーレイ、ドロワーメニュー、見出しデザイン、区切り線、メニューリンク、ボタン、表示アニメーション、レスポンシブ表示を設定しています。色、余白、横幅、角丸、影などを変更できます。

script.js
ドロワーメニューの開閉処理、背景クリックによる非表示処理、アクセシビリティ用の属性切り替えを行っています。

設置方法・使い方
sampleフォルダ内へindex.htmlstyle.cssscript.jsを同じ階層へ配置します。sample/index.htmlをブラウザで開き、「メニューを開く」をクリックすると見出し付きドロワーメニューを確認できます。

カスタマイズできる内容
index.htmlでは見出し名、メニュー項目、リンク先URL、ボタンの文字を変更できます。メニューグループを追加・削除することで、サイト構成に合わせたメニューへ変更できます。

style.cssでは背景色、文字色、見出し色、区切り線、横幅、余白、角丸、影、背景の暗さ、アニメーション速度などを変更できます。

script.jsではドロワーメニューの開閉処理や背景クリックによる閉じる動作を変更できます。

数値調整
style.csswidth:340px;はドロワーメニューの横幅です。padding:24px;は内側余白、margin:0 0 24px;は各グループの間隔です。background:rgba(0,0,0,.45);.45は背景の暗さを表し、値を大きくすると暗く、小さくすると背景が見えやすくなります。animation:section-heading-drawer-menu-slide .35s ease forwards;.35sは表示アニメーション時間です。値を大きくするとゆっくり表示され、小さくすると速く表示されます。

レスポンシブ対応
style.cssではwidth:100%max-width:100%overflow-y:auto@media screen and (max-width:640px)を使用しています。スマートフォンではドロワーメニューと開くボタンを画面幅いっぱいに表示し、タブレット・PCでも画面サイズに合わせて利用できます。



コメント