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

ドロワーメニュー

×ボタンで閉じられるドロワーメニューの作り方

×ボタンで閉じられるドロワーメニューの作り方を紹介します。このサンプルでは、「メニューを開く」ボタンをクリックすると画面左側からドロワーメニューが表示され、右上に配置した×ボタンをクリックすると閉じられます。HTMLでメニューとボタンの構造を作成し、CSSでレイアウトやスライド表示を設定、JavaScriptで開閉状態を切り替えます。

閉じる操作を×ボタンへまとめているため、利用者が操作位置を判断しやすく、一般的なWebサイトのメニューとして使いやすい構成です。企業サイトのナビゲーション、会員サイトの設定メニュー、管理画面の操作一覧、ECサイトの商品カテゴリーなど、画面を広く使いながら必要なときだけメニューを表示したい場面に利用できます。

メニューのタイトルやリンク項目、×ボタンの大きさ、背景色、ドロワーメニューの横幅、余白、影、表示アニメーションの速度はコード内から変更できます。画面幅640px以下ではドロワーメニューを画面幅いっぱいに表示するため、スマートフォン・タブレット・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="close-button-drawer-menu_wrap">

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

    <!-- 説明文 -->
    <p class="close-button-drawer-menu_text">
      ボタンをクリックすると、画面左側からドロワーメニューが表示されます。
    </p>

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

  </div>

  <!-- オーバーレイ -->
  <div
    class="close-button-drawer-menu_overlay"
    data-close-button-drawer-overlay
    aria-hidden="true">

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

      <!-- ×ボタン(×記号はCSSで表示) -->
      <button
        class="close-button-drawer-menu_close"
        type="button"
        data-close-button-drawer-close
        aria-label="ドロワーメニューを閉じる">
      </button>

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

      <!-- 説明文 -->
      <p class="close-button-drawer-menu_drawer-text">
        右上の×ボタンをクリックするとドロワーメニューを閉じられます。
      </p>

      <!-- ナビゲーション -->
      <nav
        class="close-button-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では「メニューを開く」ボタンと×ボタンをクリックしたときの開閉処理を行います。シンプルな構成のため、初心者でもファイルごとの役割を理解しながら導入できます。

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ではドロワーメニューの横幅、背景色、文字色、余白、角丸、影、ボタンやリンクの色、ホバー時の表示、アニメーション速度などを用途に合わせて調整できます。

script.jsでは開閉対象の要素を変更したり、処理内容を編集したりできます。現在は「開くボタン」と「×ボタン」による開閉のみ実装しています。

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

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

padding:32px 28px;
ドロワーメニュー内の余白です。値を大きくすると内容と枠線の間隔が広がります。

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

width:44px;height:44px;
×ボタンの大きさです。値を変更するとボタンサイズが変わります。

font-size:26px;
×記号の文字サイズです。値を大きくすると記号が大きく表示されます。

transform:translateY(2px);
×記号の上下位置を調整しています。値を変更すると記号の表示位置が変わります。

transition:.3s;
ボタンや背景が切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

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

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width、および@media (max-width:640px)により、スマートフォンでは余白やドロワーメニューの横幅を自動調整します。PC・タブレット・スマートフォンでもレイアウトが崩れにくく、そのまま利用できます。


こちらもおすすめ


コメント