外側クリックで閉じられるトーストの作り方
外側クリックで閉じられるトーストの作り方を紹介します。このサンプルでは、「トーストを表示」ボタンをクリックすると画面右下へ通知が表示され、トースト以外の場所をクリックすると閉じられます。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="outside-click-close-toast_wrap">
<!-- タイトル -->
<div class="outside-click-close-toast_title">
外側クリックで閉じられるトースト
</div>
<!-- 説明文 -->
<p class="outside-click-close-toast_text">
ボタンをクリックすると画面右下へトーストが表示されます。
</p>
<!-- トースト表示ボタン -->
<button type="button" class="outside-click-close-toast_button">
トーストを表示
</button>
</div>
<!-- トースト本体 -->
<div class="outside-click-close-toast_message">
保存しました
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではトーストを表示するボタンと通知メッセージを配置し、CSSでは画面右下へ表示されるトーストのデザインや表示位置、アニメーションを設定しています。JavaScriptではトーストの表示処理と、トーストの外側をクリックしたときに閉じる処理を実装しています。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはトーストを表示するボタンと通知メッセージを配置するファイルです。タイトル、説明文、ボタンの文字、通知メッセージを変更できます。
style.cssはトースト全体のデザインを設定するファイルです。背景色、文字色、表示位置、余白、角丸、影、表示アニメーションなどを変更できます。
script.jsはボタンをクリックしたときにトーストを表示し、トースト以外の場所をクリックしたときに閉じる処理を行います。トースト本体をクリックした場合は閉じないように制御しています。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置してください。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開くと利用できます。「トーストを表示」をクリックすると通知が表示され、トーストの外側をクリックすると閉じます。
カスタマイズできる内容
index.htmlではタイトル、説明文、表示ボタンの文字、通知メッセージを変更できます。保存完了、送信完了、削除完了など用途に合わせた内容へ変更できます。
style.cssでは背景色、文字色、角丸、影、余白、表示位置、表示サイズなどを変更できます。script.jsでは外側クリックで閉じる動作を変更したり、閉じる対象を追加したりすることもできます。
数値調整
style.css
max-width:700px;
全体の最大横幅です。値を大きくすると横へ広がり、小さくするとコンパクトになります。
margin:40px auto;
全体の上下余白です。値を変更すると画面上下の間隔が変わります。
padding:32px;
全体の内側余白です。値を大きくすると余白が広くなります。
border-radius:18px;
全体の角丸です。値を大きくすると丸みが強くなります。
font-size:22px;
タイトルの文字サイズです。値を変更するとタイトルの大きさが変わります。
padding:12px 24px;
ボタンの内側余白です。値を変更するとボタン全体の大きさが変わります。
right:24px;
トーストを画面右端から表示する位置です。値を大きくすると左側へ移動します。
bottom:24px;
トーストを画面下端から表示する位置です。値を大きくすると上側へ移動します。
padding:14px 18px;
トーストの内側余白です。値を変更すると通知全体の大きさが変わります。
border-radius:10px;
トーストの角丸です。値を大きくすると丸みが強くなり、小さくすると角ばった見た目になります。
box-shadow:0 12px 30px ...
トーストの影です。12pxや30pxを変更すると影の広がりや立体感が変わります。
transform:translateY(12px);
表示前の移動量です。値を大きくすると下から大きくスライドして表示されます。
transition:.3s;
表示・非表示の切り替え時間です。0.3秒で切り替わります。値を大きくするとゆっくり、小さくすると速く切り替わります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxにより画面幅に合わせて縮小表示されます。また、640px以下ではpadding:24px 18px;へ変更し、トーストは左右18pxの余白を確保して表示されるため、スマートフォン・タブレット・PCで利用できます。
コメント