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

ドロップダウンメニュー

背景をぼかして表示するドロップダウンメニューの作り方

背景をぼかして表示するドロップダウンメニューの作り方を紹介します。このサンプルでは、「メニュー」をクリックするとドロップダウンメニューが開き、同時に周囲の背景へぼかしを加えます。背景の内容をぼかすことで、開いているドロップダウンメニューを目立たせ、操作する場所を分かりやすくできます。

ヘッダーメニュー、サービス一覧、会員サイトの操作メニュー、管理画面の機能メニューなど、ドロップダウンメニューを強調して表示したい場面に利用できます。「メニュー」をクリックすると背景をぼかしながらメニューを表示し、もう一度クリックするとメニューを閉じて背景のぼかしを解除します。

HTMLではボタンの文字やメニュー項目を変更でき、CSSではドロップダウンメニューの横幅、余白、背景色、角丸、影、背景のぼかし具合などを調整できます。JavaScriptではボタンのクリックに合わせてメニューと背景の表示状態を切り替えます。画面幅が狭い場合にも利用できるレスポンシブ対応のサンプルです。

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

デモ

背景をぼかして表示するドロップダウンメニュー

「メニュー」をクリックすると、背景をぼかしながらドロップダウンメニューを表示します。

「メニュー」をクリックすると背景がぼかされ、ドロップダウンメニューが前面に表示されます。もう一度クリックすると閉じます。

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

<!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="blur-background-dropdown-menu_wrap">

    <!-- タイトル -->
    <div class="blur-background-dropdown-menu_title">
      背景をぼかして表示するドロップダウンメニュー
    </div>

    <!-- 説明文 -->
    <p class="blur-background-dropdown-menu_text">
      「メニュー」をクリックすると、背景をぼかしながらドロップダウンメニューを表示します。
    </p>

    <!-- メニュー配置エリア -->
    <div class="blur-background-dropdown-menu_group">

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

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

        <!-- メニュー項目 -->
        <ul
          class="blur-background-dropdown-menu_list"
          data-blur-background-dropdown-menu-list="">

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

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

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

        </ul>

      </div>

    </div>

  </div>

  <!-- 背景をぼかすオーバーレイ -->
  <div
    class="blur-background-dropdown-menu_overlay"
    data-blur-background-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はドロップダウンメニュー全体を構成するファイルです。タイトル、説明文、「メニュー」のボタン文字、「ホーム」「サービス」「お問い合わせ」などのメニュー項目とリンク先を変更できます。また、背景をぼかして表示するためのオーバーレイもHTML内へ配置しています。

style.cssはドロップダウンメニューと背景ぼかしのデザインを設定するファイルです。案内エリアの横幅や余白、ボタンの色、メニューの横幅、角丸、影、メニュー項目の余白、背景のぼかし具合などを変更できます。

script.jsはドロップダウンメニューの表示と非表示を制御するファイルです。「メニュー」をクリックするとメニュー本体と背景ぼかしへ表示用クラスを付け、もう一度クリックするとクラスを外して元の状態へ戻します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。「メニュー」をクリックすると背景がぼかされ、ドロップダウンメニューが前面へ表示されます。もう一度「メニュー」をクリックするとドロップダウンメニューが閉じ、背景のぼかしも解除されます。

カスタマイズできる内容
index.htmlではタイトル、説明文、メニューボタンの文字、メニュー項目、リンク先を変更できます。用途に合わせてサイト内ナビゲーション、サービス一覧、会員向けメニューなどへ表示内容を変更できます。

style.cssでは案内エリアの最大横幅、余白、背景色、ボタンの色、ドロップダウンメニューの最大横幅、メニュー項目の余白、角丸、影、背景ぼかしの強さを変更できます。backdrop-filter:blur(6px);を変更すると背景のぼかし具合を調整でき、background:rgba(255,255,255,.15);を変更すると、ぼかした背景へ重ねる色と透明度を調整できます。

数値調整
style.css
padding:40px 20px;
ページ全体の上下・左右余白です。40pxで上下、20pxで左右の余白を調整できます。

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

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

padding:32px;
案内エリアの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。

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

font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。

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

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

padding:14px 18px;
メニューボタンの内側余白です。14pxで上下、18pxで左右の余白を調整できます。

top:calc(100% + 10px);
ドロップダウンメニューをボタンの下へ配置する間隔です。10pxを大きくするとボタンとの距離が広がり、小さくすると近くなります。

padding:8px;
ドロップダウンメニュー内側の余白です。値を大きくするとメニュー項目と外枠の間隔が広がります。

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

padding:12px 14px;
各メニュー項目の内側余白です。12pxで上下、14pxで左右の余白を調整できます。

background:rgba(255,255,255,.15);
背景ぼかしへ重ねる色と透明度です。最後の.15を大きくすると白色が強く重なり、小さくすると元の背景が見えやすくなります。

backdrop-filter:blur(6px);
背景のぼかし具合です。6pxを大きくすると強くぼかされ、小さくするとぼかしが弱くなります。Safari向けには-webkit-backdrop-filter:blur(6px);も同じ値で指定しています。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssの案内エリアへwidth:100%;max-width:700px;を指定し、画面幅に合わせて縮小できるようにしています。ドロップダウンメニューにもwidth:100%;max-width:280px;を指定しているため、親要素の幅に合わせて調整されます。また、640px以下では案内エリアの内側余白をpadding:24px 18px;へ変更しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント