指定時間後に自動で閉じるポップオーバーの作り方
指定時間後に自動で閉じるポップオーバーを作る方法を紹介します。このサンプルでは、ボタンをクリックするとポップオーバーが表示され、一定時間が経過すると自動的に閉じる動作を実装します。ユーザーが閉じる操作をしなくても自動で非表示になるため、一時的なお知らせや補足情報の表示に便利です。
操作方法の案内や機能説明、ヒント表示、完了メッセージなど、短時間だけ表示したい情報に適しています。必要な情報だけを表示し、一定時間後に自動で閉じることで画面をすっきり保つことができます。スマートフォン・タブレット・PCのどの環境でも同じ操作で利用できます。
タイトル、説明文、ボタンの文字、ポップオーバー内の文章はHTMLから変更できます。CSSでは色やサイズ、余白、角丸、影などのデザインを自由に調整でき、JavaScriptでは自動で閉じるまでの時間を変更できます。用途に合わせて表示時間を調整しやすいシンプルなサンプルです。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
ボタンをクリックするとポップオーバーが表示されます。
「ポップオーバーを表示」をクリックすると表示され、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="auto-close-popover_wrap">
<!-- タイトル -->
<div class="auto-close-popover_title">
指定時間後に自動で閉じるポップオーバー
</div>
<!-- 説明文 -->
<p class="auto-close-popover_text">
ボタンをクリックするとポップオーバーが表示されます。
</p>
<!-- ボタンとポップオーバー -->
<div class="auto-close-popover_area">
<button
class="auto-close-popover_button"
type="button"
id="auto-close-popover-button">
ポップオーバーを表示
</button>
<div
class="auto-close-popover_popup"
id="auto-close-popover-popup">
このポップオーバーは表示から3秒後に自動で閉じます。
</div>
</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はポップオーバー全体を構成するファイルです。タイトル、説明文、ボタンの文字、ポップオーバー内に表示する文章を変更できます。ボタンをクリックすると、JavaScriptによってボタンの下へポップオーバーが表示されます。
style.cssはポップオーバー全体のデザインを設定するファイルです。全体の横幅や余白、背景色、角丸、ボタンのサイズや色、ポップオーバーの横幅、表示位置、枠線、角丸、影などを変更できます。ポップオーバーは初期状態ではdisplay:none;で非表示になり、showクラスが追加されると表示されます。
script.jsはポップオーバーの表示と自動非表示を制御するファイルです。ボタンをクリックするとshowクラスを追加し、3秒後にクラスを削除します。表示中にもう一度ボタンをクリックした場合は、実行中のタイマーを解除して3秒の待機時間を最初から開始します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。「ポップオーバーを表示」ボタンをクリックするとボタンの下へポップオーバーが表示され、3秒が経過すると自動で非表示になります。
カスタマイズできる内容
index.htmlでは「指定時間後に自動で閉じるポップオーバー」のタイトル、説明文、「ポップオーバーを表示」のボタン文字、ポップオーバー内の文章を変更できます。用途に合わせて表示内容を書き換えられます。
style.cssでは全体の最大横幅、余白、背景色、角丸、ボタンの内側余白、背景色、文字色、文字サイズ、ポップオーバーの横幅、内側余白、枠線、角丸、背景色、影、文字色、行間を変更できます。また、top:calc(100% + 18px);を変更すると、ボタンとポップオーバーの上下間隔を調整できます。
script.jsではautoClosePopoverDelayの値を変更することで、ポップオーバーを表示してから自動で非表示になるまでの時間を調整できます。
数値調整
style.css
max-width:700px;
ポップオーバー全体を囲むエリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto 220px;
全体の外側余白です。40pxは上側、220pxは下側の余白を表します。左右のautoによって中央へ配置されます。
padding:32px;
全体の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
全体を囲むエリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
margin:0 0 24px;
説明文の下側余白です。24pxを大きくするとボタンとの間隔が広がり、小さくすると狭くなります。
padding:14px 28px;
ボタンの内側余白です。14pxは上下、28pxは左右の余白を表します。値を大きくするとボタンが大きくなります。
border-radius:10px;
ボタンの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:16px;
ボタンの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
top:calc(100% + 18px);
ポップオーバーをボタンの下へ配置するための値です。18pxを大きくするとボタンとの上下間隔が広がり、小さくすると近くなります。
width:300px;
ポップオーバーの横幅です。値を大きくすると横に広がり、小さくすると狭くなります。
padding:18px;
ポップオーバーの内側余白です。値を大きくすると文章と枠線の間隔が広がり、小さくすると狭くなります。
border-radius:12px;
ポップオーバーの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
box-shadow:0 12px 30px rgba(15,23,42,.12);
ポップオーバーの影です。12pxは縦方向の位置、30pxはぼかしの大きさです。値を変更すると影の位置や広がりを調整できます。
width:16px;・height:16px;
ポップオーバー上部に表示する三角形の大きさです。値を変更すると吹き出し部分のサイズが変わります。
script.js
const autoClosePopoverDelay=3000;
ポップオーバーが自動で非表示になるまでの待機時間です。3000は3秒を表します。5000に変更すると5秒後、1000に変更すると1秒後に非表示になります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssでは全体にmax-width:700px;とbox-sizing:border-box;を指定し、画面幅640px以下では内側余白をpadding:24px 18px;へ変更しています。また、ポップオーバーの横幅を300pxから260pxへ変更し、小さい画面でも表示しやすくしています。スマートフォン・タブレット・PCで利用できます。
コメント