指定時間後に自動表示するモーダルウインドウの作り方
指定時間後に自動表示するモーダルウインドウの作り方を紹介します。このサンプルでは、ページを表示してから3秒経過すると、JavaScriptのsetTimeoutを使ってモーダルウインドウを自動表示します。利用者が開くボタンをクリックする必要がなく、ページを見始めてから一定時間が経過したタイミングで、お知らせや案内を表示できます。
ECサイトでキャンペーン情報を案内したい場合、会員サイトで利用者へお知らせを表示したい場合、お問い合わせページで補足情報を伝えたい場合など、ページを一定時間閲覧した利用者へ情報を表示する用途に利用できます。このサンプルでは3秒後に一度だけモーダルが表示され、「閉じる」ボタンをクリックするとモーダルを閉じることができます。
基本的なモーダルウインドウの構成を維持しながら、JavaScriptによる時間指定の自動表示だけを追加しています。HTMLではモーダルタイトルや本文を変更でき、CSSでは横幅、余白、背景色、角丸、影などを調整できます。JavaScriptの待機時間を変更すれば、モーダルを自動表示するまでの時間も用途に合わせて設定できます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
このデモでは、ページ表示から3秒後にモーダルウインドウが自動で表示されます。
ページ表示から3秒後に自動表示されるモーダルウインドウです。閉じるボタンをクリックするとモーダルを閉じます。
ページ表示から3秒後にモーダルが自動表示されます。閉じた後は「もう一度確認する」をクリックすると再表示できます。
コードをコピーして使おう!
<!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-auto-open-delay_wrap">
<!-- タイトル -->
<div class="modal-window-auto-open-delay_title">
指定時間後に自動表示するモーダルウインドウ
</div>
<!-- 説明文 -->
<p class="modal-window-auto-open-delay_text">
ページ表示から3秒後にモーダルウインドウが自動で表示されます。
</p>
</div>
<!-- 自動表示するモーダル本体 -->
<div
class="modal-window-auto-open-delay_modal"
role="dialog"
aria-modal="true"
aria-labelledby="modal-window-auto-open-delay-title"
data-delay-modal="">
<!-- モーダルタイトル -->
<div
class="modal-window-auto-open-delay_modal-title"
id="modal-window-auto-open-delay-title">
お知らせ
</div>
<!-- モーダル本文 -->
<p class="modal-window-auto-open-delay_modal-text">
ページ表示から3秒後に自動表示されるモーダルウインドウです。閉じるボタンをクリックするとモーダルを閉じます。
</p>
<!-- モーダルを閉じるボタン -->
<button
class="modal-window-auto-open-delay_close"
type="button"
data-delay-modal-close="">
閉じる
</button>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは説明エリア、自動表示するモーダルウインドウ、閉じるボタンを配置します。CSSでは基本形のモーダルウインドウを基準に、横幅、余白、背景色、角丸、影などを設定します。JavaScriptではsetTimeoutを使用し、ページを表示してから3秒経過した時点でモーダルウインドウを自動表示します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlは説明エリアとモーダルウインドウを構成するファイルです。説明エリアのタイトルや文章、モーダルタイトル、本文、「閉じる」ボタンの文字を変更できます。style.cssとscript.jsもindex.htmlから読み込みます。
style.cssは説明エリアとモーダルウインドウのデザインを設定するファイルです。説明エリアやモーダルの横幅、余白、背景色、文字色、角丸、影、閉じるボタンのデザインなどを変更できます。
script.jsはモーダルの自動表示と閉じる処理を行うファイルです。setTimeoutでページ表示後の待機時間を設定し、3000ミリ秒が経過するとis-activeクラスを追加してモーダルを表示します。「閉じる」ボタンをクリックするとis-activeクラスを削除してモーダルを閉じます。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。3つのファイルを保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsが読み込まれ、ページを表示してから3秒経過すると画面中央にモーダルウインドウが自動表示されます。「閉じる」ボタンをクリックするとモーダルを閉じることができます。
カスタマイズできる内容
index.htmlでは説明エリアのタイトルや文章、モーダルタイトル、本文、「閉じる」ボタンの文字を変更できます。style.cssでは説明エリアやモーダルの最大横幅、余白、背景色、文字色、角丸、影、ボタンのデザインなどを変更できます。script.jsではsetTimeoutの3000を変更することで、ページを表示してからモーダルが自動表示されるまでの待機時間を調整できます。
数値調整
style.css
padding:40px 20px;
ページ全体の余白です。40pxが上下、20pxが左右の余白です。値を大きくすると画面端との間隔が広がり、小さくすると狭くなります。
max-width:700px;
説明エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
説明エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
説明エリアの内側余白です。値を大きくすると内容と外枠の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
説明エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
説明エリアのタイトル文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
width:calc(100% - 40px);
モーダル本体の横幅です。画面幅から40pxを差し引いて表示します。40pxを大きくすると左右の余白が広がってモーダルが狭くなり、小さくするとモーダルが広くなります。
max-width:420px;
モーダル本体の最大横幅です。値を大きくするとモーダルが横に広がり、小さくするとコンパクトになります。
padding:28px;
モーダル本体の内側余白です。値を大きくすると内容とモーダル端の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
モーダル本体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
box-shadow:0 20px 40px rgba(0,0,0,.2);
モーダル本体の影です。20pxや40pxを大きくすると影の位置や広がりが大きくなり、小さくすると控えめになります。
margin:0 0 24px;
モーダル本文の下側余白です。24pxを大きくすると「閉じる」ボタンとの間隔が広がり、小さくすると狭くなります。
padding:10px 20px;
「閉じる」ボタンの内側余白です。10pxが上下、20pxが左右の余白です。値を大きくするとボタンが大きくなり、小さくするとコンパクトになります。
script.js
3000
ページを表示してからモーダルを自動表示するまでの待機時間です。JavaScriptではミリ秒で指定するため、3000は3秒を表します。5000へ変更すると5秒後、1000へ変更すると1秒後に表示されます。値を大きくすると表示までの時間が長くなり、小さくすると短くなります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssの説明エリアにはwidth:100%とmax-width:700px、モーダル本体にはwidth:calc(100% - 40px)とmax-width:420pxを設定しているため、画面幅に合わせて横幅が縮小されます。また、640px以下ではメディアクエリを適用し、説明エリアの余白をpadding:24px 18px;、モーダル本体の余白もpadding:24px 18px;へ変更しています。スマートフォン・タブレット・PCの画面幅に合わせて利用できます。
コメント