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

ドロップダウンメニュー

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

×ボタンで閉じられるドロップダウンメニューの作り方を紹介します。このサンプルでは、「メニュー」ボタンをクリックすると項目一覧が表示され、メニュー内の右上にある「×」ボタンをクリックすると閉じる仕組みをHTML・CSS・JavaScriptで実装します。閉じる場所が分かりやすいため、利用者が迷わず操作できるドロップダウンメニューを作成できます。

JavaScriptでは、「メニュー」ボタンをクリックしたときにドロップダウンメニューの表示状態を切り替えます。また、「×」ボタンをクリックしたときは、表示用のクラスを削除してメニューを閉じます。外側クリックやESCキーによる閉じる処理は追加せず、×ボタンによる操作に絞ったシンプルな構成です。

メニュー名やリンク項目はHTMLから変更でき、CSSではボタンの色、メニューの横幅、余白、角丸、影、×ボタンの大きさなどを調整できます。JavaScriptは外部ライブラリを使用していないため、そのままWebページへ組み込みやすく、スマートフォン・タブレット・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-dropdown-menu_wrap">

    <!-- タイトル -->
    <div class="close-button-dropdown-menu_title">
      ×ボタンで閉じるドロップダウンメニュー
    </div>

    <!-- 説明文 -->
    <p class="close-button-dropdown-menu_text">
      「メニュー」をクリックすると項目一覧が表示されます。
    </p>

    <!-- ボタン配置エリア -->
    <div class="close-button-dropdown-menu_group">

      <!-- ドロップダウンメニューエリア -->
      <div class="close-button-dropdown-menu_area">

        <!-- メニューを開くボタン -->
        <button
          class="close-button-dropdown-menu_button"
          type="button">

          メニュー

          <span class="close-button-dropdown-menu_arrow">
            ▼
          </span>

        </button>

        <!-- ドロップダウンメニュー -->
        <ul class="close-button-dropdown-menu_list">

          <!-- メニュー上部 -->
          <li class="close-button-dropdown-menu_header">

            <span class="close-button-dropdown-menu_heading">
              メニュー一覧
            </span>

            <button
              class="close-button-dropdown-menu_close"
              type="button"
              aria-label="メニューを閉じる">
              ×
            </button>

          </li>

          <li>
            <a
              class="close-button-dropdown-menu_link"
              href="#">
              ホーム
            </a>
          </li>

          <li>
            <a
              class="close-button-dropdown-menu_link"
              href="#">
              サービス
            </a>
          </li>

          <li>
            <a
              class="close-button-dropdown-menu_link"
              href="#">
              お問い合わせ
            </a>
          </li>

        </ul>

      </div>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではドロップダウンメニュー本体と「メニュー」ボタンを配置し、CSSではレイアウトや配色、×ボタンのデザインを設定しています。JavaScriptではメニューの開閉と、×ボタンをクリックしたときにドロップダウンメニューを閉じる処理を実装しています。

「メニュー」をクリックするとドロップダウンメニューが表示され、メニュー右上の×ボタンをクリックすると閉じます。外側クリックやESCキーによる操作は実装しておらず、×ボタンによる閉じる動作だけを確認できるシンプルなサンプルです。

メニュー名やリンク項目は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;
コンテンツ全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
コンテンツ全体の上下余白です。40pxを変更すると上下の間隔が変わります。

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

max-width:280px;
ドロップダウンメニューの最大横幅です。値を大きくするとメニューが広くなり、小さくするとコンパクトになります。

min-height:52px;
「メニュー」ボタンの高さです。値を大きくするとボタンが高くなり、小さくすると低くなります。

padding:14px 18px;
ボタンやリンクの内側余白です。値を変更すると余白が広がったり狭くなったりします。

width:34px;height:34px;
×ボタンの大きさです。値を大きくすると押しやすくなり、小さくするとコンパクトになります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではwidth:100%max-width:700pxによって画面幅に応じて全体が縮小されます。また、@media (max-width:640px)では内側余白を調整し、小さい画面でも見やすく表示されます。スマートフォン・タブレット・PCでそのまま利用できます。


こちらもおすすめ


コメント