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

ドロワーメニュー

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

ESCキーで閉じられるドロワーメニューを作る方法を紹介します。このサンプルでは、画面左側から表示されるドロワーメニューをJavaScriptで制御し、キーボードのESCキーを押すだけで閉じられるように実装します。マウス操作だけでなくキーボード操作にも対応するため、操作性やアクセシビリティを向上させたいWebサイトにも導入しやすい構成です。

管理画面、会員サイト、ECサイト、企業サイトなど、サイドメニューを利用するさまざまな場面で活用できます。メニューを開いたあと、ESCキーを押すだけで素早く閉じられるため、パソコンでの操作性が向上し、快適に画面を切り替えられます。ドロワーメニューは左側からスライド表示され、シンプルで分かりやすい動作を確認できます。

タイトル、説明文、メニュー項目はHTMLから変更でき、CSSでは横幅、余白、背景色、角丸、影、アニメーション速度などを自由に調整できます。JavaScriptではESCキーで閉じる処理のみを実装しているため、動作が分かりやすく、スマートフォン・タブレット・PCでも利用しやすいドロワーメニューのサンプルとして活用できます。

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

デモ

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="esc-close-drawer-menu_wrap">

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

    <!-- 説明文 -->
    <p class="esc-close-drawer-menu_text">
      ボタンをクリックしたあと、ESCキーを押すとドロワーメニューを閉じられます。
    </p>

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

  </div>

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

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

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

      <!-- 操作説明 -->
      <p class="esc-close-drawer-menu_drawer-text">
        ESCキーを押すとドロワーメニューを閉じられます。
      </p>

      <!-- ナビゲーション -->
      <nav
        class="esc-close-drawer-menu_nav"
        aria-label="メニュー">

        <a href="#">ホーム</a>
        <a href="#">サービス</a>
        <a href="#">お知らせ</a>
        <a href="#">お問い合わせ</a>

      </nav>

    </aside>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではドロワーメニューの案内エリア、開くボタン、メニュー本体、ナビゲーション項目を作成します。CSSでは画面左側から表示されるドロワーメニューの横幅、背景色、余白、影、開閉アニメーションなどを設定し、JavaScriptでは開くボタンのクリック処理とESCキーを押したときに閉じる処理を行います。

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

各ファイルの役割
index.htmlはドロワーメニュー全体の構造を作成するファイルです。案内エリアのタイトル、説明文、開くボタンの文字、ドロワーメニュー内のタイトル、操作説明、メニュー項目を変更できます。

style.cssはドロワーメニューのデザインを設定するファイルです。案内エリアやボタンの見た目、オーバーレイの背景色、ドロワーメニューの横幅、余白、影、リンクの配色、ホバー時の表示、開閉アニメーションなどを調整できます。

script.jsはドロワーメニューの開閉を制御するファイルです。「メニューを開く」ボタンをクリックすると表示用クラスを追加し、ESCキーが押されると表示用クラスを削除してドロワーメニューを閉じます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。「メニューを開く」ボタンをクリックすると画面左側からドロワーメニューが表示されます。メニューが開いている状態でキーボードのESCキーを押すと、ドロワーメニューが閉じます。

カスタマイズできる内容
index.htmlでは案内エリアのタイトルや説明文、ボタン名、ドロワーメニュー内のタイトル、説明文、各メニュー項目の文章とリンク先を変更できます。用途に合わせて、管理画面のナビゲーション、会員サイトのメニュー、ECサイトのカテゴリー一覧などへ変更できます。

style.cssでは案内エリアやドロワーメニューの横幅、背景色、文字色、余白、角丸、影、ボタンやリンクの色、ホバー時の移動量、開閉アニメーションの速度を変更できます。script.jsではESCキーを判定する処理と、表示用クラスを追加・削除する処理を確認できます。

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

margin:40px auto;
案内エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
案内エリアとドロワーメニュー本体の内側余白です。値を大きくすると内容と端の間隔が広がり、小さくすると詰まった表示になります。

border-radius:18px;
案内エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

width:360px;
ドロワーメニュー本体の横幅です。値を大きくするとメニューが広くなり、小さくすると細く表示されます。

background:rgba(17,24,39,.55);
オーバーレイの透明度です。最後の0.55を大きくすると背景が濃くなり、小さくすると薄くなります。

transition:opacity .3s ease;
オーバーレイが切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

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

transform:translateY(-2px);
開くボタンへマウスを重ねたときの移動量です。2pxを大きくすると上方向への移動量が増えます。

transform:translateX(4px);
メニューリンクへマウスを重ねたときの移動量です。4pxを大きくすると右方向への移動量が増えます。

gap:12px;
メニューリンク同士の間隔です。値を大きくすると間隔が広がり、小さくすると狭くなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-widthにより、案内エリアが画面幅に合わせて縮小されます。また、@media (max-width:640px)ではページ全体や案内エリアの余白を小さくし、開くボタンとドロワーメニュー本体を横幅いっぱいに表示します。スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント