HTML要素 ・ その他

<dialog>

ダイアログ

確認メッセージやモーダルウィンドウなど、ページの上に重ねて表示するダイアログを作る要素です。

種類
ブロック要素
終了タグ
必須
主な属性
open
01

サンプルコード

HTML
1<dialog open>
2 <p>カートに商品を追加しました。</p>
3 <form method="dialog">
4 <button>閉じる</button>
5 </form>
6</dialog>
CSS
1dialog {
2 position: static;
3 padding: 16px 20px;
4 border: 1px solid #ccc;
5 border-radius: 8px;
6 box-shadow: 0 4px 16px rgba(0, 0, 0, .15);
7}
02

実行結果

ブラウザでの表示プレビューでは open 属性で表示した状態を示しています
03

解説

dialog はダイアログボックスを表す要素です。open 属性があると表示され、ないと非表示になります。

JavaScriptの showModal() で開くと、背景が操作できなくなる「モーダル」として表示されます。Escキーで閉じられ、フォーカスの管理もブラウザが行ってくれます。

中に form method="dialog" を置くと、そのフォームのボタンを押したときにダイアログが閉じます。

04

応用例・注意点

よく使うメソッド・CSS

名前説明
showModal()モーダルとして開く(背景を操作不可に)
show()モーダルではなく開く
close()閉じる
::backdropモーダルの背景(暗い幕)を装飾する

ボタンでモーダルを開く

showModal() で開くと、背景に ::backdrop の幕が表示されます。

HTML
1<button onclick="dlg.showModal()">開く</button>
2<dialog id="dlg">
3 <p>本当に削除しますか?</p>
4 <form method="dialog"><button>キャンセル</button></form>
5</dialog>
CSS
1dialog::backdrop {
2 background: rgba(0, 0, 0, .5);
3}

注意点

  1. 01モーダルを開くときは open 属性ではなく showModal() を使います。
  2. 02ダイアログには閉じる手段を必ず用意します。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉