削除確認モーダルウインドウを作る方法
削除確認モーダルウインドウを作る方法を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用し、データを削除する前に確認画面を表示する仕組みを作成します。「削除する」ボタンをクリックすると画面中央にモーダルウインドウが表示され、削除対象の名前と確認メッセージを確認できます。誤って削除操作を実行してしまうことを防ぐため、利用者に最終確認を求める構成です。
商品管理画面や会員情報の管理ページ、登録データの一覧など、削除前に確認が必要な場面に適しています。モーダルウインドウには「いいえ」と「はい、削除する」の2つのボタンを用意しており、「いいえ」をクリックするとデータを残したまま確認画面を閉じます。一方、「はい、削除する」をクリックすると、JavaScriptによって対象のHTML要素が削除され、削除完了メッセージが表示されます。確認画面には注意書きも表示し、実行する操作の内容を分かりやすく伝えます。
削除処理にはJavaScriptのremove()メソッドを使用し、指定したHTML要素をページ上から取り除きます。削除対象の名前や確認メッセージ、ボタンの文字などはHTMLから変更でき、CSSではモーダルの横幅や余白、背景色、角丸、警告メッセージ、ボタンのデザインなどを調整できます。なお、この仕組みで削除されるのは画面上のHTML要素であり、サーバー上のファイルやデータベースには影響しません。ページを再読み込みすると元の表示に戻ります。スマートフォン・タブレット・PCでも利用しやすいレスポンシブ対応の構成です。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
削除確認モーダル
「削除する」をクリックすると確認画面が表示されます。削除するかどうかを選択してください。
サンプル商品A
登録済みの商品データ
サンプル商品Aを削除しました。
「削除する」をクリックすると確認モーダルが表示されます。「いいえ」を選ぶとデータは残り、「はい、削除する」を選ぶと画面上のデータが削除されます。実際のファイルやデータベースは削除されません。ページを再読み込みすると元に戻ります。
コードをコピーして使おう!
<!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="delete-confirm-modal_item" id="delete-confirm-modal-item">
<!-- 削除対象の情報 -->
<div>
<!-- 削除対象の名前。用途に合わせて変更できます -->
<p class="delete-confirm-modal_item-name">
サンプル商品A
</p>
<!-- 削除対象の補足説明 -->
<p class="delete-confirm-modal_item-text">
登録済みの商品データ
</p>
</div>
<!-- 削除確認モーダルを開くボタン -->
<button class="delete-confirm-modal_open" id="delete-confirm-modal-open" type="button">
削除する
</button>
</div>
<!--
削除完了メッセージ
「はい、削除する」をクリックすると表示されます。
削除対象の名前を変更した場合は、
このメッセージも合わせて変更してください。
-->
<p class="delete-confirm-modal_success" id="delete-confirm-modal-success" role="status">
サンプル商品Aを削除しました。
</p>
<!--
削除確認モーダル
初期状態では非表示です。
「削除する」をクリックすると画面中央に表示されます。
「いいえ」では削除せずに閉じます。
「はい、削除する」では画面上のデータを削除します。
-->
<div class="delete-confirm-modal_modal" id="delete-confirm-modal-modal" role="dialog" aria-modal="false" aria-labelledby="delete-confirm-modal-heading" aria-hidden="true">
<!-- モーダルタイトル -->
<div class="delete-confirm-modal_heading" id="delete-confirm-modal-heading">
削除確認
</div>
<!--
削除確認メッセージ
「サンプル商品A」の部分は、
削除対象に合わせて変更してください。
-->
<p class="delete-confirm-modal_message">
<span class="delete-confirm-modal_target">サンプル商品A</span>を削除しますか?
</p>
<!-- 削除前の注意書き -->
<p class="delete-confirm-modal_warning">
この操作を実行すると、表示中のデータが削除されます。
</p>
<!-- 確認ボタン -->
<div class="delete-confirm-modal_buttons">
<!-- 削除をキャンセルするボタン -->
<button class="delete-confirm-modal_cancel" id="delete-confirm-modal-cancel" type="button">
いいえ
</button>
<!-- 削除を確定するボタン -->
<button class="delete-confirm-modal_delete" id="delete-confirm-modal-delete" type="button">
はい、削除する
</button>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは削除対象のデータと削除確認モーダルウインドウを作成し、CSSでは削除対象のカードやモーダルのデザインを設定します。JavaScriptではモーダルの開閉とHTML要素の削除を制御し、「はい、削除する」を選択した場合に画面上のデータを取り除いて完了メッセージを表示します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlは削除対象のデータと確認モーダルを構成するファイルです。「サンプル商品A」という削除対象のカードを用意し、「削除する」ボタンから確認画面を表示できます。モーダル内には削除対象名、確認メッセージ、注意書き、「いいえ」「はい、削除する」の2つのボタンを配置しています。
style.cssは削除対象のカードと確認モーダルのデザインを設定するファイルです。カードの横幅、余白、背景色、角丸、削除ボタンの色、モーダルの影、警告メッセージ、削除完了メッセージなどを変更できます。
script.jsはモーダルウインドウの開閉と削除処理を制御するファイルです。「削除する」をクリックするとモーダルを表示し、「いいえ」をクリックすると削除せずに閉じます。「はい、削除する」をクリックすると、JavaScriptのremove()メソッドで指定したHTML要素を削除し、完了メッセージを表示します。
設置方法・使い方
sampleフォルダへindex.html・style.css・script.jsを配置してください。3ファイルを同じ階層に保存すると、index.htmlからCSSとJavaScriptが読み込まれます。
sample/index.htmlをブラウザで開くと、「サンプル商品A」という削除対象のカードと「削除する」ボタンが表示されます。ボタンをクリックすると、画面中央に削除確認モーダルウインドウが表示されます。
「いいえ」をクリックすると、削除を実行せずにモーダルが閉じます。「はい、削除する」をクリックすると、対象のカードが画面上から削除され、「サンプル商品Aを削除しました。」という完了メッセージが表示されます。
このサンプルで削除されるのはブラウザ上のHTML要素だけです。サーバー上のファイルやデータベースは削除されず、ページを再読み込みすると元の状態に戻ります。
カスタマイズできる内容
index.htmlでは、削除対象の名前、補足説明、確認メッセージ、注意書き、ボタンの文字、削除完了メッセージを変更できます。例えば「サンプル商品A」を「サンプル記事A」に変更する場合は、削除対象の名前・確認メッセージ・完了メッセージをそれぞれ書き換えてください。
削除対象にはid="delete-confirm-modal-item"を設定しています。script.jsでは、このidを指定してHTML要素を取得しています。別のHTML要素を削除したい場合は、対象のid属性とJavaScriptの取得先を一致させてください。なお、このサンプルは1件のHTML要素を削除する構成です。
style.cssでは、削除対象のカードの横幅、背景色、余白、枠線、角丸、ボタンの色、モーダルの表示位置、影、警告メッセージ、完了メッセージなどを調整できます。
数値調整
style.css
max-width:460px;
削除対象のカードと完了メッセージの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
削除対象のカードと完了メッセージの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:18px 20px;
削除対象のカードの内側余白です。上下18px・左右20pxを指定しています。値を大きくするとカード内の余白が広がります。
gap:16px;
削除対象の情報と「削除する」ボタンの間隔です。値を大きくすると間隔が広がります。
border-radius:12px;
削除対象のカードと完了メッセージの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:16px;
削除対象名の文字サイズです。値を大きくすると文字が大きくなります。
padding:12px 18px;
「削除する」ボタンの内側余白です。上下12px・左右18pxを指定しています。値を大きくするとボタンが大きくなります。
background:#dc2626;
「削除する」と「はい、削除する」ボタンの背景色です。色コードを変更するとボタンの色が変わります。
top:50%;
モーダルの縦方向の表示位置です。50%を基準に画面中央へ配置します。値を小さくすると上方向、大きくすると下方向へ移動します。
left:50%;
モーダルの横方向の表示位置です。50%を基準に画面中央へ配置します。値を小さくすると左方向、大きくすると右方向へ移動します。
width:calc(100% - 40px);
モーダルの横幅です。画面幅から40pxを引いて左右に余白を確保します。40pxを大きくすると画面端との間隔が広がります。
max-width:420px;
モーダルの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
max-height:calc(100vh - 40px);
モーダルの最大高さです。画面の高さから40pxを引いた範囲に収め、内容が多い場合はモーダル内を縦スクロールできるようにしています。
padding:28px;
モーダルの内側余白です。値を大きくすると内容と外枠の間隔が広がります。
border-radius:18px;
モーダル本体の角丸です。値を大きくすると丸みが強くなります。
box-shadow:0 20px 40px rgba(0,0,0,.2);
モーダルの影です。20pxは影の上下位置、40pxはぼかし範囲、.2は影の濃さを表します。
font-size:24px;
モーダルタイトルの文字サイズです。値を大きくすると「削除確認」の文字が大きくなります。
margin:18px 0 0;
注意書きの上側余白です。18pxを大きくすると確認メッセージとの間隔が広がります。
padding:12px 14px;
注意書きの内側余白です。上下12px・左右14pxを指定しています。
gap:12px;
「いいえ」と「はい、削除する」ボタンの間隔です。値を大きくするとボタン同士の間隔が広がります。
margin-top:28px;
確認ボタンの上側余白です。値を大きくすると注意書きとボタンの間隔が広がります。
padding:13px 12px;
確認ボタンの内側余白です。上下13px・左右12pxを指定しています。値を大きくするとボタンが大きくなります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssでは、モーダルにwidth:calc(100% - 40px);とmax-width:420px;を設定しているため、画面幅が狭い場合は自動的に縮小します。また、max-height:calc(100vh - 40px);とoverflow-y:auto;によって、画面の高さに内容が収まらない場合はモーダル内を縦スクロールできます。
画面幅640px以下では、削除対象のカードをpadding:16px 14px;、モーダル本体をpadding:24px 18px;に変更し、確認ボタンの間隔を10pxへ縮小します。
画面幅380px以下では、削除対象の情報と「削除する」ボタンを縦並びに変更します。削除ボタンは横幅いっぱいに表示し、「いいえ」「はい、削除する」ボタンの文字サイズも13pxに調整するため、スマートフォン・タブレット・PCでも利用しやすい構成です。
コメント