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

ドロワーメニュー

アイコン付きドロワーメニューを作る方法

アイコン付きドロワーメニューを作る方法を紹介します。このサンプルでは、各メニュー項目の左側へアイコンを表示したドロワーメニューをHTML・CSS・JavaScriptで実装します。「メニューを開く」ボタンをクリックすると画面左側からドロワーメニューが表示され、閉じるボタンや背景をクリックするとメニューを閉じられます。

アイコンを付けることで、メニューの内容を文字だけでなく視覚的にも伝えられるため、管理画面、会員サイト、ECサイト、企業サイトなど幅広いWebサイトで利用しやすいデザインです。ホームやお問い合わせなど、よく利用するメニューを直感的に見分けられるようになります。

メニュー名、リンク先、アイコン、配色、ドロワーメニューの横幅、余白、角丸、影、表示アニメーションの速度などを自由に変更できます。画面幅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="icon-drawer-menu_wrap">

    <!-- 案内エリアのタイトル -->
    <h1 class="icon-drawer-menu_title">
      アイコン付きドロワーメニュー
    </h1>

    <!-- ドロワーメニューの説明文 -->
    <p class="icon-drawer-menu_text">
      ボタンをクリックすると、各項目にアイコンが付いたドロワーメニューが表示されます。
    </p>

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

  </main>

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

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

      <!-- ドロワーメニューのタイトル -->
      <h2
        class="icon-drawer-menu_drawer-title"
        id="icon-drawer-menu-title">
        メニュー
      </h2>

      <!-- メニューリンク一覧 -->
      <nav
        class="icon-drawer-menu_nav"
        aria-label="メニュー">

        <!--
          href属性の#をホームページのURLへ変更する
          絵文字を変更すると表示するアイコンを変更できる
          「ホーム」を変更するとメニュー名を変更できる
        -->
        <a href="#">
          <span
            class="icon-drawer-menu_icon"
            aria-hidden="true">🏠</span>
          <span>ホーム</span>
        </a>

        <!--
          href属性の#をサービスページのURLへ変更する
          絵文字を変更すると表示するアイコンを変更できる
          「サービス」を変更するとメニュー名を変更できる
        -->
        <a href="#">
          <span
            class="icon-drawer-menu_icon"
            aria-hidden="true">🛠️</span>
          <span>サービス</span>
        </a>

        <!--
          href属性の#をお知らせページのURLへ変更する
          絵文字を変更すると表示するアイコンを変更できる
          「お知らせ」を変更するとメニュー名を変更できる
        -->
        <a href="#">
          <span
            class="icon-drawer-menu_icon"
            aria-hidden="true">📢</span>
          <span>お知らせ</span>
        </a>

        <!--
          href属性の#をお問い合わせページのURLへ変更する
          絵文字を変更すると表示するアイコンを変更できる
          「お問い合わせ」を変更するとメニュー名を変更できる
        -->
        <a href="#">
          <span
            class="icon-drawer-menu_icon"
            aria-hidden="true">✉️</span>
          <span>お問い合わせ</span>
        </a>

      </nav>

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

    </aside>

  </div>

  <!-- 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
案内エリア、開くボタン、ドロワーメニュー、アイコン付きメニューリンク、閉じるボタンを配置しています。各リンクの絵文字を変更するとアイコンが変わり、リンク内の文字を変更するとメニュー名が変わります。href="#"#を移動先URLへ書き換えると、実際のページへ移動できます。

style.css
ページ全体、案内エリア、背景オーバーレイ、ドロワーメニュー、メニューリンク、アイコン表示領域、ボタン、表示アニメーション、レスポンシブ表示を設定しています。配色、横幅、余白、角丸、影、アイコンサイズ、表示速度を変更できます。

script.js
開くボタンによる表示、閉じるボタンと背景クリックによる非表示、aria-hidden属性の切り替えを行います。

設置方法・使い方
sampleフォルダ内へindex.htmlstyle.cssscript.jsを同じ階層で配置し、sample/index.htmlをブラウザで開きます。「メニューを開く」をクリックするとドロワーメニューが表示され、「閉じる」ボタンまたは背景部分をクリックすると閉じます。

カスタマイズできる内容
index.htmlではタイトル、説明文、ボタン名、メニュー項目、リンク先URL、絵文字アイコンを変更できます。メニューを追加する場合は、nav要素内へ既存のa要素と同じ構成を追加します。style.cssでは背景色、文字色、ボタン色、ドロワーメニューの横幅、余白、角丸、影、メニュー間隔、アイコンの大きさ、背景の暗さ、アニメーション時間を変更できます。

数値調整
style.csswidth:340px;はドロワーメニューの横幅、padding:28px;は内側余白、gap:12px;はメニュー項目同士とアイコン・文字の間隔です。width:28px;height:28px;はアイコン表示領域、font-size:20px;は絵文字アイコンの大きさです。background:rgba(0,0,0,.45);.45を大きくすると背景が暗くなり、小さくすると薄くなります。animation:icon-drawer-menu-slide .35s ease forwards;.35sを大きくするとゆっくり表示され、小さくすると速く表示されます。

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



コメント