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

ドロワーメニュー

外側クリックで閉じられるドロワーメニューの作り方

外側クリックで閉じられるドロワーメニューの作り方を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用し、ボタンを押すと画面左側からドロワーメニューが表示され、メニューの外側をクリックすると自動で閉じるUIを実装します。メニューを閉じるための専用ボタンを押さなくても直感的に操作できるため、スマートフォンやタブレットでも扱いやすいナビゲーションを作成できます。

お問い合わせ画面、会員サイト、管理画面、ECサイトのカテゴリメニュー、スマートフォン向けナビゲーションなど、メニューを一時的に表示したい場面で利用できます。メニューを開いている間は半透明の背景を表示し、背景部分をクリックするとドロワーメニューが閉じるため、現在メニューが表示中であることも分かりやすくなっています。表示と非表示はスライドアニメーションで切り替わり、自然な操作感を実現できます。

HTMLではタイトルやメニュー項目を変更でき、CSSでは横幅、背景色、文字色、余白、アニメーション時間などを調整できます。JavaScriptは開閉処理と外側クリック時の判定のみで構成されているため、初心者でも内容を理解しやすく、スマートフォン・タブレット・PCで利用しやすいレスポンシブ対応のドロワーメニューとしてそのまま活用できます。

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

デモ

外側クリックで閉じるドロワーメニュー

ボタンを押してメニューを開き、背景部分をクリックすると閉じます。

「メニューを開く」を押したあと、半透明の背景をクリックするとドロワーメニューが閉じます。

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

<!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="drawer-close-outside-click_wrap">

    <!-- タイトル -->
    <div class="drawer-close-outside-click_title">
      外側クリックで閉じるドロワーメニュー
    </div>

    <!-- 説明文 -->
    <p class="drawer-close-outside-click_text">
      ボタンを押してメニューを開き、背景部分をクリックすると閉じます。
    </p>

    <!-- メニューを開くボタン -->
    <button
      class="drawer-close-outside-click_button"
      id="drawer-open">
      メニューを開く
    </button>

  </div>

  <!-- オーバーレイ -->
  <div
    class="drawer-close-outside-click_overlay"
    id="drawer-overlay">
  </div>

  <!-- ドロワーメニュー -->
  <nav
    class="drawer-close-outside-click_menu"
    id="drawer-menu">

    <!-- 見出し -->
    <div class="drawer-close-outside-click_heading">
      メニュー
    </div>

    <!-- メニュー一覧 -->
    <ul class="drawer-close-outside-click_list">
      <li><a href="#">ホーム</a></li>
      <li><a href="#">サービス</a></li>
      <li><a href="#">お問い合わせ</a></li>
    </ul>

  </nav>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではドロワーメニューとオーバーレイ、メニューを開くボタンを配置し、CSSではレイアウトやスライドアニメーション、JavaScriptではメニューの開閉処理と外側クリックで閉じる処理を実装しています。シンプルな構成のため、初心者でも内容を理解しやすく、そのままWebサイトへ導入しやすいサンプルです。

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

各ファイルの役割
index.htmlはドロワーメニュー全体を構成するファイルです。タイトル、説明文、ボタン、メニュー項目などを編集できます。

style.cssはドロワーメニューのデザインを設定するファイルです。横幅、背景色、文字色、余白、角丸、影、スライドアニメーションなどを変更できます。

script.jsはメニューを開く処理と、背景(オーバーレイ)をクリックしたときにメニューを閉じる処理を担当します。

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

カスタマイズできる内容
index.htmlではタイトル、説明文、ボタンの文字、メニュー項目を変更できます。用途に合わせてサイトメニューやカテゴリ一覧などへ変更できます。

style.cssではドロワーメニューの横幅、背景色、文字色、余白、角丸、影、ボタンデザイン、スライドアニメーションの速度などを変更できます。JavaScriptは現在の開閉動作を利用したまま、メニュー項目の追加や変更にも対応できます。

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

padding:32px;
デモ全体の内側余白です。値を大きくすると余白が広がり、小さくすると詰まった表示になります。

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

padding:24px;
ドロワーメニュー内の余白です。値を大きくすると項目との間隔が広がります。

transition:0.3s;
ドロワーメニューと背景が切り替わる時間です。0.3秒でアニメーションします。値を大きくするとゆっくり、小さくすると速く切り替わります。

border-radius:18px;
デモ全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより画面幅に応じてレイアウトが調整されます。また、ドロワーメニューはmax-width:80%を指定しているため、スマートフォンでも画面幅を超えず表示できます。さらに640px以下ではpadding:24px 18px;へ変更し、スマートフォン・タブレット・PCで利用しやすいレイアウトになっています。


こちらもおすすめ


コメント