背景を暗く表示するドロップダウンメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ドロップダウンメニュー

背景を暗く表示するドロップダウンメニューの作り方

背景を暗く表示するドロップダウンメニューの作り方を紹介します。このサンプルでは、「メニュー」をクリックするとドロップダウンメニューが開き、同時に画面全体へ暗い背景を表示します。周囲のコンテンツを暗くすることで、開いているドロップダウンメニューを目立たせ、現在操作しているメニューを分かりやすく表示できます。

ヘッダーメニュー、サービス一覧、会員サイトの操作メニュー、管理画面の機能メニューなど、ドロップダウンメニューを前面へ強調して表示したい場面に利用できます。「メニュー」をクリックすると背景とドロップダウンメニューが表示され、もう一度クリックすると元の画面へ戻ります。JavaScriptでは表示用クラスを切り替えるシンプルな方法で、メニューと背景の表示状態を同時に制御しています。

HTMLではボタンの文字や「ホーム」「サービス」「お問い合わせ」などのメニュー項目を変更できます。CSSではドロップダウンメニューの横幅、余白、背景色、角丸、影、背景の暗さなどを用途に合わせて調整できます。画面幅が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="semi-transparent-overlay-dropdown-menu_wrap">

    <!-- タイトル -->
    <div class="semi-transparent-overlay-dropdown-menu_title">
      半透明オーバーレイ付きドロップダウンメニュー
    </div>

    <!-- 説明文 -->
    <p class="semi-transparent-overlay-dropdown-menu_text">
      「メニュー」をクリックすると、背景を暗くする半透明オーバーレイとドロップダウンメニューを表示します。
    </p>

    <!-- メニュー配置エリア -->
    <div class="semi-transparent-overlay-dropdown-menu_group">

      <!-- ドロップダウンメニュー -->
      <div
        class="semi-transparent-overlay-dropdown-menu_area"
        data-semi-transparent-overlay-dropdown-menu-area="">

        <!-- メニューを開閉するボタン -->
        <button
          class="semi-transparent-overlay-dropdown-menu_button"
          type="button"
          data-semi-transparent-overlay-dropdown-menu-button="">
          メニュー
          <span class="semi-transparent-overlay-dropdown-menu_arrow">▼</span>
        </button>

        <!-- メニュー項目 -->
        <ul
          class="semi-transparent-overlay-dropdown-menu_list"
          data-semi-transparent-overlay-dropdown-menu-list="">

          <li>
            <a class="semi-transparent-overlay-dropdown-menu_link" href="#">
              ホーム
            </a>
          </li>

          <li>
            <a class="semi-transparent-overlay-dropdown-menu_link" href="#">
              サービス
            </a>
          </li>

          <li>
            <a class="semi-transparent-overlay-dropdown-menu_link" href="#">
              お問い合わせ
            </a>
          </li>

        </ul>

      </div>

    </div>

  </div>

  <!-- 画面全体を覆う半透明オーバーレイ -->
  <div
    class="semi-transparent-overlay-dropdown-menu_overlay"
    data-semi-transparent-overlay-dropdown-menu-overlay="">
  </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はドロップダウンメニューの開閉を制御するファイルです。「メニュー」ボタンをクリックすると、メニューと半透明オーバーレイへis-openクラスを付け外しして表示状態を切り替えます。同時にaria-expandedの値も現在の開閉状態に合わせて変更します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。そのあとsample/index.htmlをブラウザで開いてください。「メニュー」ボタンをクリックすると、ボタンの下へドロップダウンメニューが表示され、同時に画面背景へ半透明のオーバーレイが表示されます。もう一度「メニュー」ボタンをクリックすると、メニューとオーバーレイが非表示になります。

カスタマイズできる内容
index.htmlではタイトル、説明文、開閉ボタンの「メニュー」という文字、ホーム・サービス・お問い合わせの各メニュー項目を変更できます。メニュー項目のa要素に設定するリンク先も用途に合わせて変更できます。

style.cssでは全体の背景色や横幅、ボタンの色、文字サイズ、メニューの横幅、ボタンとメニューの間隔、メニューの背景色、枠線、角丸、影などを変更できます。半透明オーバーレイはbackground:rgba(15,23,42,.55);で設定しており、RGBの値で色を、最後の.55で透明度を調整できます。

数値調整
style.css
max-width:700px;
ドロップダウンメニュー全体を囲むエリアの最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。

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

padding:32px;
全体の内側余白です。値を大きくすると内容と外枠の間隔が広がります。

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

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

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

padding:14px 18px;
ボタンの内側余白です。14pxが上下、18pxが左右の余白を表します。値を大きくするとボタン内部の余白が広がります。

border-radius:10px;
ボタンとドロップダウンメニューの角丸です。値を大きくすると丸みが強くなります。

top:calc(100% + 10px);
開閉ボタンとドロップダウンメニューの間隔です。10pxを大きくするとメニューがボタンから離れ、小さくすると近づきます。

box-shadow:0 10px 24px rgba(15,23,42,.12);
ドロップダウンメニューの影です。10pxや24pxを変更すると、影の位置やぼかし具合を調整できます。

background:rgba(15,23,42,.55);
画面全体へ表示する半透明オーバーレイです。最後の.55が透明度を表し、0に近づけると透明になり、1に近づけると濃く表示されます。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-widthによって、画面幅に合わせて全体やメニューの横幅が縮小されます。また、画面幅640px以下ではメディアクエリによって全体の内側余白をpadding:24px 18px;へ変更しています。スマートフォン・タブレット・PCの画面幅に合わせて利用できます。


こちらもおすすめ


コメント