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

ドロワーメニュー

背景をぼかして表示するドロワーメニューの作り方

背景をぼかして表示するドロワーメニューの作り方を紹介します。ドロワーメニューを開いたときに背景へぼかし効果を適用することで、メニューへ自然に視線を集められるサンプルです。HTML・CSS・JavaScriptだけで実装できるため、ライブラリを使わずに導入できます。

このサンプルでは、ボタンをクリックするとドロワーメニューがスライド表示され、同時に背景へぼかし効果が適用されます。閉じるボタンや背景をクリックするとドロワーメニューが閉じ、背景も元の状態へ戻ります。お問い合わせページや会員サイト、管理画面、ECサイトなど、メニューへ集中して操作してほしい場面で利用しやすい構成です。

タイトルや説明文、ボタンの文字はもちろん、ドロワーメニューの幅や背景色、ぼかしの強さ、アニメーション速度なども自由に変更できます。初心者でも構造を理解しやすいコメント付きのコードになっているため、そのまま利用するだけでなく、自分のWebサイトに合わせてカスタマイズしながら活用できます。

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

デモ

背景をぼかして表示するドロワーメニュー

ボタンをクリックすると、背景をぼかしながらドロワーメニューを表示します。

「ドロワーメニューを開く」をクリックすると背景がぼかされ、ドロワーメニューが表示されます。「閉じる」または背景をクリックすると元の表示へ戻ります。

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

<!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>

  <!-- 背景ぼかしの対象となるページ内容 -->
  <main class="blur-background-drawer-menu_page" data-page>

    <!-- 案内エリア -->
    <div class="blur-background-drawer-menu_wrap">

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

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

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

    </div>

  </main>

  <!-- ドロワーメニュー表示時の背景 -->
  <div
    class="blur-background-drawer-menu_overlay"
    data-overlay
    aria-hidden="true">

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

      <!-- ドロワーメニューのタイトル -->
      <div
        class="blur-background-drawer-menu_drawer-title"
        id="blur-background-drawer-menu-title">
        メニュー
      </div>

      <!-- ドロワーメニューの説明文 -->
      <p class="blur-background-drawer-menu_drawer-text">
        背景をぼかしながら表示されるドロワーメニューです。
      </p>

      <!-- ドロワーメニューを閉じるボタン -->
      <button
        class="blur-background-drawer-menu_close"
        type="button"
        data-close>
        閉じる
      </button>

    </div>

  </div>

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

</body>
</html>

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。「ドロワーメニューを開く」ボタンをクリックすると、画面左側からドロワーメニューが表示され、同時にメニュー以外のページ内容へぼかし効果が適用されます。HTMLでページ内容とドロワーメニューの構造を作成し、CSSで背景ぼかしや表示アニメーションを設定、JavaScriptで開閉状態を制御しています。

背景のぼかしは、ページ内容を囲む要素へJavaScriptからis-blurクラスを追加することで適用しています。ドロワーメニューを閉じるとクラスが削除され、ぼかしも解除されます。「閉じる」ボタンだけでなく、ドロワーメニューの外側にある背景部分をクリックした場合も閉じられる構成です。

ドロワーメニューのタイトルや説明文、ボタンの文字はHTMLで変更できます。ぼかしの強さ、ドロワーメニューの横幅、背景色、余白、影、表示速度などはCSSで調整できます。スマートフォンではドロワーメニューを画面幅いっぱいに表示するため、スマートフォン・タブレット・PCで利用できます。

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

各ファイルの役割
index.html
背景ぼかしの対象となるページ内容、案内エリア、ドロワーメニュー、開くボタン、閉じるボタンを配置しています。案内エリアやドロワーメニューのタイトル、説明文、ボタンの文字を変更する場合は、このファイルを編集します。

style.css
ページ全体、背景ぼかし、案内エリア、背景オーバーレイ、ドロワーメニュー、ボタン、表示アニメーション、レスポンシブ表示を設定しています。ぼかしの強さ、ドロワーメニューの横幅、色、余白、角丸、影、表示速度などを変更する場合は、このファイルを編集します。

script.js
開くボタンをクリックしたときにページ内容へぼかし用クラスを追加し、ドロワーメニューを表示します。閉じるボタンまたは背景部分をクリックしたときは、ぼかし用クラスと表示用クラスを削除して元の状態へ戻します。

設置方法・使い方
sampleフォルダ内へindex.htmlstyle.cssscript.jsを同じ階層で配置します。配置後にsample/index.htmlをブラウザで開いてください。

「ドロワーメニューを開く」ボタンをクリックすると、ページ内容がぼかされ、画面左側からドロワーメニューが表示されます。「閉じる」ボタンまたはドロワーメニュー外側の背景部分をクリックすると、メニューが閉じて背景のぼかしも解除されます。

カスタマイズできる内容
index.htmlでは、案内エリアのタイトル、説明文、開くボタンの文字、ドロワーメニューのタイトル、説明文、閉じるボタンの文字を変更できます。

style.cssでは、ページ背景色、文字色、案内エリアの横幅、余白、枠線、角丸、ボタン色、背景の暗さ、ぼかしの強さ、ドロワーメニューの横幅、影、表示アニメーションを変更できます。

script.jsでは、ドロワーメニューを開く処理、閉じる処理、背景部分をクリックしたときの処理を変更できます。

数値調整
style.cssfilter:blur(6px);は背景のぼかしの強さです。値を大きくすると強くぼかされ、小さくすると弱くなります。

transition:filter .3s ease;.3sは、背景のぼかしが切り替わる時間です。値を大きくするとゆっくり変化し、小さくすると速く変化します。

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

background:rgba(0,0,0,.25);.25は背景オーバーレイの透明度です。値を大きくすると背景が暗くなり、小さくすると薄くなります。

animation:blur-background-drawer-menu-slide .35s ease forwards;.35sは、ドロワーメニューが表示される時間です。値を大きくするとゆっくり表示され、小さくすると速く表示されます。

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

レスポンシブ対応
style.cssではwidth:100%max-widthmin-height:100vhoverflow-y:auto@media screen and (max-width:640px)を使用してレスポンシブ対応しています。

画面幅640px以下ではページ全体と案内エリアの余白を縮小し、開くボタンとドロワーメニューを画面幅いっぱいに表示します。内容が画面の高さを超えた場合は、ドロワーメニュー内を縦にスクロールできます。



コメント