指定時間後に自動で閉じるモーダルウインドウの作り方
指定時間後に自動で閉じるモーダルウインドウの作り方を紹介します。このサンプルでは、「モーダルを開く」ボタンをクリックすると画面中央にモーダルウインドウが表示され、表示してから3秒経過するとJavaScriptによって自動的に閉じます。利用者が閉じる操作をしなくても、一定時間だけ情報を表示して自動で閉じる仕組みを実装できます。
ECサイトで一時的なお知らせを表示したい場合、会員サイトで操作完了を案内したい場合、お問い合わせ画面で送信後の補足情報を表示したい場合、管理画面で短時間だけメッセージを見せたい場合などに利用できます。また、自動で閉じるまで待たずに「閉じる」ボタンをクリックして手動で閉じることもできます。
基本的なモーダルウインドウの構成を維持しながら、JavaScriptのsetTimeoutを使った自動終了処理だけを追加しています。HTMLではタイトルや本文を変更でき、CSSではモーダルの横幅、余白、背景色、角丸、影などを調整できます。JavaScriptの待機時間を変更すれば、自動で閉じるまでの時間も用途に合わせて設定できます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
モーダルを開くと、表示してから3秒後に自動で閉じます。
このモーダルウインドウは表示してから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-close-delay_wrap">
<!-- タイトル -->
<div class="modal-window-auto-close-delay_title">
指定時間後に自動で閉じるモーダルウインドウ
</div>
<!-- 説明文 -->
<p class="modal-window-auto-close-delay_text">
モーダルを開くと、表示してから3秒後に自動で閉じます。
</p>
<!-- モーダルを開くボタン -->
<button
class="modal-window-auto-close-delay_open"
type="button"
data-auto-close-modal-open="">
モーダルを開く
</button>
</div>
<!-- モーダル本体 -->
<div
class="modal-window-auto-close-delay_modal"
role="dialog"
aria-modal="true"
aria-labelledby="modal-window-auto-close-delay-title"
data-auto-close-modal="">
<!-- モーダルタイトル -->
<div
class="modal-window-auto-close-delay_modal-title"
id="modal-window-auto-close-delay-title">
お知らせ
</div>
<!-- モーダル本文 -->
<p class="modal-window-auto-close-delay_modal-text">
このモーダルウインドウは表示してから3秒後に自動で閉じます。
</p>
<!-- モーダルを手動で閉じるボタン -->
<button
class="modal-window-auto-close-delay_close"
type="button"
data-auto-close-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ではモーダルを開く処理に加えて、表示してから3秒後に自動で閉じる処理を行います。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはモーダルを開く操作エリアとモーダル本体を構成するファイルです。タイトル、説明文、モーダルタイトル、本文、「モーダルを開く」「閉じる」の各ボタンを配置しています。style.cssとscript.jsもindex.htmlから読み込みます。
style.cssは操作エリアとモーダルウインドウのデザインを設定するファイルです。横幅、余白、背景色、文字色、角丸、影、ボタンのデザインなどを変更できます。
script.jsはモーダルの表示、自動終了、手動で閉じる処理を行うファイルです。「モーダルを開く」をクリックするとis-activeクラスを追加してモーダルを表示し、setTimeoutによって3秒後に同じクラスを削除して自動で閉じます。「閉じる」をクリックした場合は、モーダルを閉じると同時に自動終了用のタイマーを解除します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。3つのファイルを保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsが読み込まれます。「モーダルを開く」をクリックすると画面中央にモーダルウインドウが表示され、表示してから3秒後に自動で閉じます。3秒経過する前に「閉じる」をクリックすると、その時点でモーダルを閉じることもできます。
カスタマイズできる内容
index.htmlでは操作エリアのタイトルや説明文、モーダルタイトル、本文、各ボタンの文字を変更できます。style.cssでは操作エリアやモーダルの最大横幅、余白、背景色、文字色、角丸、影、ボタンのデザインなどを変更できます。script.jsではsetTimeoutに指定している3000を変更することで、モーダルを表示してから自動で閉じるまでの時間を調整できます。
数値調整
style.css
max-width:700px;
操作エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
操作エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
操作エリアの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
操作エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
操作エリアのタイトル文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
padding:12px 24px;
「モーダルを開く」ボタンの内側余白です。12pxが上下、24pxが左右の余白です。値を大きくするとボタンが大きくなり、小さくするとコンパクトになります。
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を変更すると影の位置や広がりを調整できます。
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;へ変更しています。スマートフォン・タブレット・PCの画面幅に合わせて利用できます。
コメント