ESCキーで閉じられるドロワーメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

ESCキーで閉じられるドロワーメニューの作り方

ESCキーで閉じられるドロワーメニューの作り方を紹介します。ドロワーメニューは、ボタンをクリックしてメニューを表示し、画面を広く使いながらナビゲーションを提供できる定番UIです。本記事では、HTML・CSS・JavaScriptだけを使い、開閉ボタンによる操作に加えて、キーボードのESCキーを押すことでドロワーメニューを閉じられる基本的な実装方法を紹介します。

サンプルコードでは、「メニューを開く」ボタンをクリックするとドロワーメニューが表示され、「閉じる」ボタンまたはESCキーでメニューを閉じられます。ESCキーによる操作を追加することで、キーボード操作にも対応しやすくなり、シンプルな構成のまま扱いやすいドロワーメニューを実装できます。

管理画面や会員サイト、企業サイト、ECサイトなど、メニューを画面の横から表示したい場面で利用できます。メニュー項目やボタンの文字はHTMLで変更でき、色・幅・余白・アニメーションなどはCSSで調整できます。また、JavaScriptを編集すれば開閉処理も自由にカスタマイズできるため、自分のWebサイトに合わせたドロワーメニューへ発展させる際のベースとしても活用できます。

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

デモ

ESCキーで閉じられるドロワーメニュー

「メニューを開く」をクリックしたあと、ESCキーまたは「閉じる」ボタンでドロワーメニューを閉じられます。

「メニューを開く」をクリックするとドロワーメニューが表示されます。ESCキーまたは「閉じる」ボタンで閉じる動作を確認できます。

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

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

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

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

  <!-- ページタイトル -->
  <title>ESCキーで閉じられるドロワーメニュー</title>

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

</head>
<body>

  <!-- デモ全体 -->
  <div class="drawer-menu-close-esc_wrap">

    <!-- タイトル -->
    <h1 class="drawer-menu-close-esc_title">
      ESCキーで閉じられるドロワーメニュー
    </h1>

    <!-- 説明文 -->
    <p class="drawer-menu-close-esc_text">
      「メニューを開く」をクリックすると、画面左側からドロワーメニューが表示されます。
    </p>

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

  </div>

  <!-- ドロワーメニュー表示時の背景 -->
  <div
    class="drawer-menu-close-esc_overlay"
    data-drawer-overlay>
  </div>

  <!-- ドロワーメニュー本体 -->
  <aside
    class="drawer-menu-close-esc_panel"
    data-drawer-panel
    aria-hidden="true">

    <!-- メニュータイトル -->
    <div class="drawer-menu-close-esc_heading">
      メニュー
    </div>

    <!-- メニュー項目 -->
    <ul class="drawer-menu-close-esc_list">
      <li><a href="#">ホーム</a></li>
      <li><a href="#">サービス</a></li>
      <li><a href="#">お問い合わせ</a></li>
    </ul>

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

  </aside>

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

</body>
</html>

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでドロワーメニューとボタンの構造を作成し、CSSでメニューのレイアウトやスライド表示、背景オーバーレイのデザインを設定しています。JavaScriptではドロワーメニューの開閉処理に加え、ESCキーを押したときにメニューを閉じる処理を実装しています。ファイルごとに役割を分けているため、デザインと動作を個別に編集しやすく、初心者でも構成を理解しやすいサンプルです。

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

各ファイルの役割
・index.html:ドロワーメニュー本体、メニュー項目、開くボタン、閉じるボタンなど画面に表示するHTMLを記述します。
・style.css:ドロワーメニューの幅、背景色、文字サイズ、余白、背景オーバーレイ、スライドアニメーションなど見た目全体を設定します。
・script.js:ドロワーメニューの開閉処理と、ESCキーを押したときにメニューを閉じる処理を実装しています。

設置方法・使い方
① sampleフォルダを作成します。
② index.html・style.css・script.jsの3ファイルを配置します。
③ index.htmlをブラウザで開きます。
④ 「メニューを開く」ボタンをクリックするとドロワーメニューが表示されます。
⑤ 「閉じる」ボタンまたはESCキーを押すとドロワーメニューを閉じることができます。

カスタマイズできる内容
・index.htmlでは、メニュー項目やタイトル、ボタンの文字などを自由に変更できます。
・style.cssでは、メニューの幅、背景色、文字色、余白、角丸、影、背景オーバーレイの色などを変更できます。
・style.cssの「width:280px;」を変更するとドロワーメニューの横幅を調整できます。
・style.cssの「background:rgba(15,23,42,.45);」の「.45」を変更すると背景の暗さを調整できます。値を大きくすると暗く、小さくすると明るく表示されます。
・script.jsでは、ドロワーメニューを開閉する処理やESCキーで閉じる動作を変更できます。

数値調整
・style.cssの「transition:transform .3s;」の「0.3」は0.3秒でスライドアニメーションすることを表します。値を大きくするとゆっくり、小さくすると速く開閉します。
・style.cssの「transition:opacity .3s,visibility .3s;」の「0.3」は背景の表示・非表示にかかる時間です。値を変更するとフェード速度を調整できます。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssで「max-width:85%;」を指定しているため、小さい画面でもドロワーメニューが画面幅を超えません。また、メディアクエリで余白を調整しているため、スマートフォン・タブレット・PCでもレイアウトが崩れにくく、そのまま利用できます。



コメント