半透明オーバーレイ付きモーダルウインドウの作り方【HTML/CSS/JavaScript・サンプルコード付き】

モーダルウインドウ

半透明オーバーレイ付きモーダルウインドウの作り方

半透明オーバーレイ付きモーダルウインドウの作り方を紹介します。このサンプルでは、モーダルウインドウを開いたときに画面全体へ半透明の黒い背景を表示し、その上へ白いモーダルを重ねます。背景を暗くすることで周囲のコンテンツを目立ちにくくし、モーダル内のお知らせや確認内容へ視線を集めやすい表示を作成できます。

お問い合わせフォームの確認画面、会員サイトのお知らせ、ECサイトの案内、管理画面の確認メッセージなど、画面上へ情報を重ねて表示したい場面に利用できます。「モーダルを開く」ボタンをクリックすると半透明オーバーレイとモーダルが表示され、「×」または「閉じる」ボタンで非表示にできます。また、モーダルの外側にある暗い背景部分をクリックして閉じることもできます。

HTMLではモーダル内のタイトルや文章、ボタンを変更でき、CSSではオーバーレイの透明度、モーダルの横幅、余白、背景色、角丸、影などを調整できます。JavaScriptではボタンや背景部分のクリックを判定して表示状態を切り替えます。画面幅に応じてモーダルが縮小するため、スマートフォン・タブレット・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-modal-window_wrap">

    <!-- タイトル -->
    <div class="semi-transparent-overlay-modal-window_title">
      半透明オーバーレイ付きモーダル
    </div>

    <!-- 説明文 -->
    <p class="semi-transparent-overlay-modal-window_text">
      「モーダルを開く」をクリックすると、背景を暗くする半透明オーバーレイとモーダルを表示します。
    </p>

    <!-- モーダルを開くボタン -->
    <button
      class="semi-transparent-overlay-modal-window_open"
      type="button"
      data-semi-transparent-overlay-modal-window-open="">
      モーダルを開く
    </button>

  </div>

  <!-- 半透明オーバーレイ -->
  <div
    class="semi-transparent-overlay-modal-window_overlay"
    data-semi-transparent-overlay-modal-window-overlay="">

    <!-- モーダル本体 -->
    <div
      class="semi-transparent-overlay-modal-window_modal"
      role="dialog"
      aria-modal="true"
      aria-labelledby="semi-transparent-overlay-modal-window-title">

      <!-- モーダルタイトル -->
      <div
        class="semi-transparent-overlay-modal-window_heading"
        id="semi-transparent-overlay-modal-window-title">
        お知らせ
      </div>

      <!-- モーダル本文 -->
      <p class="semi-transparent-overlay-modal-window_message">
        背景を半透明のオーバーレイで暗くしたモーダルウインドウです。
      </p>

      <!-- 閉じるボタン -->
      <button
        class="semi-transparent-overlay-modal-window_button"
        type="button"
        data-semi-transparent-overlay-modal-window-button="">
        閉じる
      </button>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではモーダルを開くボタン、半透明オーバーレイ、モーダル本体、閉じるボタンを配置します。CSSでは画面全体を覆う半透明の黒系オーバーレイと、中央へ表示する白いモーダルのサイズや余白、角丸、影などを設定します。JavaScriptでは「モーダルを開く」と「閉じる」の2つのボタンを使って表示状態を切り替えます。

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

各ファイルの役割
index.htmlはモーダルウインドウ全体を構成するファイルです。「半透明オーバーレイ付きモーダル」のタイトル、説明文、「モーダルを開く」ボタン、モーダル内の「お知らせ」、本文、「閉じる」ボタンの文字を変更できます。モーダル本体にはrole="dialog"aria-modal="true"を指定しています。

style.cssはモーダルと半透明オーバーレイのデザインを設定するファイルです。オーバーレイにはposition:fixedinset:0を指定して画面全体を覆い、background:rgba(15,23,42,.65);で背景を半透明の黒系カラーにしています。モーダル本体では横幅、余白、背景色、角丸、影などを設定しています。

script.jsはモーダルの表示と非表示を切り替えるファイルです。「モーダルを開く」ボタンをクリックするとオーバーレイへis-activeクラスを追加し、「閉じる」ボタンをクリックするとクラスを削除します。このサンプルでは背景部分や×ボタンでは閉じず、「閉じる」ボタンだけでモーダルを閉じます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置し、3つのファイルを同じ階層へ保存します。そのあとsample/index.htmlをブラウザで開いてください。「モーダルを開く」ボタンをクリックすると、画面全体が半透明の黒系オーバーレイで覆われ、その中央へ白いモーダルウインドウが表示されます。モーダル内の「閉じる」ボタンをクリックすると、オーバーレイとモーダルが非表示になります。

カスタマイズできる内容
index.htmlでは、モーダルを開くエリアのタイトルや説明文、モーダルタイトル、本文、「モーダルを開く」「閉じる」の各ボタン文字を変更できます。用途に合わせて、お知らせ、確認メッセージ、案内文などの表示内容へ変更できます。

style.cssでは、モーダルを開くエリアの横幅や余白、背景色、角丸に加えて、半透明オーバーレイの色と透明度を変更できます。モーダル本体では最大横幅、内側余白、背景色、角丸、影を変更できます。特にbackground:rgba(15,23,42,.65);の透明度を変更すると、背景を暗くする強さを調整できます。

数値調整
style.css

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

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

padding:32px;
モーダルを開くエリアの内側余白です。値を大きくすると内容と外枠の間隔が広がります。

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

padding:20px;
半透明オーバーレイ内の余白です。値を大きくすると画面端とモーダルの間隔が広がります。

background:rgba(15,23,42,.65);
半透明オーバーレイの色と透明度です。最後の.65が透明度を表し、1に近づけるほど背景が濃くなり、0に近づけるほど透明になります。

z-index:9999;
オーバーレイを他の要素より前面へ表示するための値です。より高いz-indexを持つ要素がある場合は、この値を調整できます。

max-width:440px;
モーダル本体の最大横幅です。値を大きくするとモーダルが横に広がり、小さくすると細くなります。

padding:36px 30px 30px;
モーダル本体の内側余白です。36pxが上、30pxが左右と下の余白です。値を大きくするとモーダル内部の余白が広がります。

border-radius:18px;
モーダル本体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

box-shadow:0 24px 60px rgba(15,23,42,.3);
モーダル本体へ付ける影です。24pxを変更すると影の縦方向の位置が変わり、60pxを変更するとぼかしの広がりが変わります。

font-size:28px;
モーダルタイトルの文字サイズです。値を大きくするとタイトルが大きく表示されます。

margin-top:28px;
モーダル本文と「閉じる」ボタンの間隔です。値を大きくすると間隔が広がり、小さくすると近づきます。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではモーダルを開くエリアにwidth:100%max-width:700pxを指定し、モーダル本体にもwidth:100%max-width:440pxを指定しているため、画面幅に合わせて縮小されます。

画面幅640px以下では、モーダルを開くエリアの余白をpadding:24px 18px;へ変更し、モーダル本体もpadding:32px 18px 20px;へ変更します。これにより、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント