ダークモード対応モーダルウインドウの作り方
ダークモード対応モーダルウインドウの作り方を紹介します。ダークモードは、画面全体を落ち着いた配色で表示するデザインとして、多くのWebサイトやWebアプリで採用されています。本記事では、HTML・CSS・JavaScriptだけを使い、ライトモードとダークモードのどちらでも見やすく表示できるモーダルウインドウを実装します。
サンプルコードでは、「モーダルを開く」ボタンをクリックするとモーダルウインドウが表示されます。また、「ダークモード切替」ボタンをクリックするとページ全体とモーダルの配色が切り替わり、それぞれの表示を確認できます。背景色や文字色、ボタンの配色を切り替えるだけのシンプルな構成なので、既存サイトへ導入しやすく、自分のデザインに合わせて自由にカスタマイズできます。
管理画面やダッシュボード、会員サイト、Webアプリなど、ダークモードへ対応したUIを作成したい場面で活用できます。モーダル内のタイトルや本文は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="modal-window-dark-mode_wrap">
<!-- タイトル -->
<h1 class="modal-window-dark-mode_title">
ダークモード対応モーダルウインドウ
</h1>
<!-- 説明文 -->
<p class="modal-window-dark-mode_text">
ボタンをクリックするとダークモード向けデザインのモーダルウインドウを表示します。
</p>
<!-- モーダルを開くボタン -->
<button
class="modal-window-dark-mode_open"
type="button"
data-modal-open>
モーダルを開く
</button>
</div>
<!-- モーダル背景 -->
<div
class="modal-window-dark-mode_overlay"
data-modal-overlay>
<!-- モーダル本体 -->
<div
class="modal-window-dark-mode_modal"
role="dialog"
aria-modal="true"
aria-labelledby="modal-title">
<!-- モーダルタイトル -->
<h2
id="modal-title"
class="modal-window-dark-mode_modal-title">
モーダルタイトル
</h2>
<!-- モーダル本文 -->
<p class="modal-window-dark-mode_modal-text">
ダークモード向けの配色で表示するモーダルウインドウです。閉じるボタンをクリックするとモーダルを閉じます。
</p>
<!-- 閉じるボタン -->
<button
class="modal-window-dark-mode_close"
type="button"
data-modal-close>
閉じる
</button>
</div>
</div>
<!-- JavaScriptファイルを読み込み -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでダークモード対応のモーダルウインドウを配置し、CSSでページ全体・モーダル・ボタンなどを暗い配色に整えます。JavaScriptでは「モーダルを開く」「閉じる」のクリックに合わせて表示状態を切り替えます。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはダークモード対応モーダルウインドウを構成するファイルです。通常画面のタイトル・説明文・「モーダルを開く」ボタンに加えて、モーダル背景、モーダルタイトル・本文・「閉じる」ボタンを配置しています。index.htmlからstyle.cssとscript.jsを読み込んで使用します。
style.cssはページ全体、通常画面、モーダル背景、モーダルウインドウ、各ボタンのデザインを設定するファイルです。ページ背景を#111827、通常画面とモーダル本体を#1f2937にすることで、全体をダークモード向けの配色にしています。モーダル背景は初期状態でdisplay:none;にし、is-activeクラスが追加されるとdisplay:flex;へ切り替わります。
script.jsはモーダルウインドウの表示・非表示を切り替えるファイルです。「モーダルを開く」をクリックするとモーダル背景へis-activeクラスを追加し、「閉じる」をクリックすると同じクラスを削除します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsが読み込まれます。「モーダルを開く」をクリックするとダークモード向けのモーダルウインドウが画面中央に表示され、「閉じる」をクリックすると非表示になります。
カスタマイズできる内容
index.htmlでは通常画面のタイトル・説明文、モーダルのタイトル・本文、開くボタンと閉じるボタンの文字を変更できます。style.cssではページ背景、通常画面、モーダル本体、文字、枠線、ボタンなどの色を変更できます。#111827、#1f2937、#374151、#4b5563などの色を調整することで、サイトのデザインに合わせたダークモードの配色に変更できます。
数値調整
style.css
padding:40px 20px;
ページ全体の内側余白です。40pxを大きくすると上下の余白が広がり、20pxを大きくすると左右の余白が広がります。
max-width:700px;
通常画面の表示エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
通常画面の上下余白です。40pxを大きくすると上下の間隔が広がります。autoによって左右中央へ配置しています。
padding:32px;
通常画面の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border:1px solid #374151;
通常画面の枠線です。1pxを大きくすると枠線が太くなります。
border-radius:18px;
通常画面とモーダル本体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
通常画面とモーダルのタイトル文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
line-height:1.8;
説明文とモーダル本文の行間です。値を大きくすると行間が広がり、小さくすると狭くなります。
padding:12px 24px;
「モーダルを開く」ボタンの内側余白です。上下の12pxを大きくするとボタンが高くなり、左右の24pxを大きくすると横に広がります。
font-size:16px;
「モーダルを開く」ボタンの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
transition:.2s;
開くボタンと閉じるボタンへマウスを重ねたときの背景色が変化する時間です。値を大きくするとゆっくり変化し、小さくすると速く変化します。
z-index:9999;
モーダル背景の重なり順です。値を大きくすると、より高い重なり順として扱われます。
padding:20px;
モーダル背景内の画面端との余白です。値を大きくするとモーダルと画面端の間隔が広がり、小さくすると狭くなります。
background:rgba(0,0,0,.7);
モーダル背景の暗さです。最後の.7を1へ近づけるほど背景が濃くなり、0へ近づけるほど透明になります。
max-width:420px;
モーダルウインドウの最大横幅です。値を大きくするとモーダルが横に広がり、小さくするとコンパクトになります。
padding:28px;
モーダルウインドウの内側余白です。値を大きくすると内容と外周の間隔が広がり、小さくすると狭くなります。
box-shadow:0 20px 40px rgba(0,0,0,.45);
モーダルウインドウの影です。20pxを大きくすると影が下方向へ移動し、40pxを大きくするとぼかしが広がります。最後の.45を大きくすると影が濃くなります。
padding:10px 20px;
「閉じる」ボタンの内側余白です。上下の10pxを大きくするとボタンが高くなり、左右の20pxを大きくすると横に広がります。
font-size:15px;
「閉じる」ボタンの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
レスポンシブ対応
画面幅が640px以下になると、メディアクエリによって.modal-window-dark-mode_wrapの内側余白を32pxから24px 18pxへ変更します。さらにモーダル本体にはwidth:100%;とmax-width:420px;が設定され、モーダル背景にはpadding:20px;があるため、スマートフォンでも画面端に余白を残しながら表示できます。
コメント