dialogタグ -ネイティブのモーダルダイアログを作成する|HTML辞典
<dialog>タグとは?
<dialog> タグは、ネイティブのモーダルダイアログ(ポップアップ)を作成するためのタグです。
JavaScript の .showModal() や .show() メソッドを使用して開閉でき、閉じるための組み込み機能も備えています。
基本情報
コンテンツモデル
フローコンテンツ(Flow Content)。
閉じタグの有無
<dialog> は 開始タグ(<dialog>)と閉じタグ(</dialog>)の両方が必要 です。
基本的な記述方法
<dialog id="myDialog">
<p>これはモーダルダイアログです。</p>
<button id="closeDialog">閉じる</button>
</dialog>
<button id="openDialog">ダイアログを開く</button>
<script>
const dialog = document.getElementById("myDialog");
document.getElementById("openDialog").addEventListener("click", () => dialog.showModal());
document.getElementById("closeDialog").addEventListener("click", () => dialog.close());
</script>
✅ 「ダイアログを開く」ボタンをクリックするとダイアログが表示され、「閉じる」ボタンで閉じることができます。
使用できる主な属性
| 属性名 | 説明 | 例 |
|---|---|---|
open | ダイアログを最初から開いた状態にする | <dialog open> |
JavaScript を使ったダイアログの制御
<dialog> タグは JavaScript のメソッドを使用して制御できます。
ダイアログを開く
document.getElementById("myDialog").showModal();
ダイアログを閉じる
document.getElementById("myDialog").close();
モーダルではなく通常のダイアログとして開く
document.getElementById("myDialog").show();
✅ showModal() との違いは、モーダル状態(他の要素を操作できなくするかどうか)。show() を使うと背景の操作が可能になります。
CSSを使ったデザイン変更
<dialog> タグのデフォルトデザインはブラウザごとに異なるため、カスタマイズが必要です。
dialog {
border: none;
border-radius: 10px;
padding: 20px;
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
text-align: center;
}
dialog::backdrop {
background: rgba(0, 0, 0, 0.5);
}
✅ このスタイルを適用すると、モーダルのデザインが向上し、背景に半透明のオーバーレイが追加されます。
適切な使用例
✅ showModal() を使ってモーダルウィンドウを開く
<dialog id="modalDialog">
<p>モーダルウィンドウのテスト</p>
<button onclick="document.getElementById('modalDialog').close()">閉じる</button>
</dialog>
<button onclick="document.getElementById('modalDialog').showModal()">ダイアログを開く</button>
✅ show() を使って通常のダイアログとして開く
<dialog id="nonModalDialog">
<p>これはモーダルではないダイアログです。</p>
<button onclick="document.getElementById('nonModalDialog').close()">閉じる</button>
</dialog>
<button onclick="document.getElementById('nonModalDialog').show()">通常ダイアログを開く</button>
適切でない使用例(誤った使い方)
❌ <dialog> を open なしで HTML 内に配置し、そのまま表示しようとする
<dialog>
<p>このダイアログは開きません</p>
</dialog>
✅ 正しい書き方(JavaScript で開閉を制御)
<dialog id="myDialog">
<p>モーダルダイアログのテスト</p>
</dialog>
<script>
document.getElementById("myDialog").showModal();
</script>
<dialog>タグと他のタグの違い
| タグ | 役割 | 特徴 | 適切な用途 |
|---|---|---|---|
<dialog> | モーダルウィンドウ | JavaScript で開閉可能 | ネイティブモーダル |
<div> | 汎用コンテナ | CSS & JavaScript で制御 | カスタムモーダル |
<section> | セクションの区切り | ページ構造を整理 | コンテンツの区分 |
<article> | 独立した記事 | 記事や投稿を作成 | ブログやニュース |
使用上の注意点
✅ <dialog> を JavaScript で開閉する
- HTML に記述しただけでは開かないため、
showModal()またはshow()を使う必要がある。
✅ showModal() は背景をブロックし、show() は通常のダイアログ
- ユーザーの操作を制限したい場合は
showModal()を使う。
✅ スタイルを適用してデフォルトデザインをカスタマイズ
- デフォルトのスタイルがブラウザごとに異なるため、適切にデザインを調整する。
関連タグ
まとめ
<dialog> タグは、HTML の ネイティブなモーダルダイアログを作成するためのタグ です。
JavaScript の showModal() や close() を活用することで、簡単にポップアップウィンドウを実装できます。
