<dialog>ってなんだ?2

HTML+CSS

2021年のブログでは、Safariが対応していないので、あまり使えないという文脈で<daialog>要素書いていましたが、あれから2年がすぎ、現在ではiOSを含め対応していますので、改めて紹介します。

現在の仕様書であるHTML Living Standard(日本語訳)では、

dialog要素は、小さいウィンドウ(”ダイアログボックス”)の形式で、ユーザーはこのウィンドウを操作してタスクを実行したり、情報を収集したりする、アプリケーションの一時的な部分を表す。ユーザーが終了すると、ダイアログはアプリケーションによって自動的に閉じる、またはユーザーによって手動で閉じることができる。

https://momdo.github.io/html/interactive-elements.html#the-dialog-element

また、open属性に関しては、

open属性は、真偽属性である。指定される場合、dialog要素はアクティブであり、ユーザーが操作できることを示す。

open属性が指定されないdialog要素は、ユーザーに表示されるべきでない。この要件は、スタイルレイヤーを通して間接的に実装されてもよい。たとえば、推奨されるデフォルトのレンダリングをサポートするユーザーエージェントは、Renderingセクションで説明されるCSSルールを使用してこの要件を実装する。

https://momdo.github.io/html/interactive-elements.html#the-dialog-element

と記載されています。

<dialog>のマークアップ

実際にdialogをマークアップする場合は下記のようになります。

<dialog open>
    <p>ダイアログが表示されました。</p>
</dialog>

open属性が指定されていることで、ダイアログボックスが表示されます。

<dialog>を操作するためのメソッド

HTML Standard 仕様書には dialog 要素によるダイアログを操作するための特別なJavaScriptのメソッドが定義されています。

dialog.show()

dialog要素を表示する。

dialog.showModal()

dialog要素を表示し、一番上のモーダルダイアログにする。
この方法は、autofocus属性を履行する。

dialog.close( [ result ] )

dialog要素を閉じる。
引数が与えられた場合、戻り値を提供する。

dialog.returnValue[ = result ]

dialogの戻り値を返す。
戻り値を更新する設定が可能である。

<dialog>の実装

HTML

<dialog class="dialog">
  <p>ダイアログが表示されました。</p>
  <button class="closeDialog">CLOSE</button>
</dialog>
<button class="openDialog">OPEN</button>
<button class="openDialog2">showModal</button>

JavaScript

<script>
let dialog = document.querySelector('.dialog');
let openBtn = document.querySelector('.openDialog');
let openBtn2 = document.querySelector('.openDialog2');
let closeBtn = document.querySelector('.closeDialog');

openBtn.addEventListener('click', function() {
    dialog.show();
});
openBtn2.addEventListener('click',function(){
  dialog.showModal();
});
closeBtn.addEventListener('click',function(){
  dialog.close();
});
</script>

実際の動きはこのようになります。

ダイアログが表示されている間は、操作ができなくなります。

また、.showModal()を使うと、背景が灰色になり、画面中央に表示されます。今までのJavaScriptで、モーダルウィンドウを制作するよりも、手軽に実装できるのがいいですね。
iOS15.4以上であれば、iPhoneでも対応しています。そろそろ積極的に使っていっていい時期だと思います。

HTMLコーディングの今。アンケート結果から分析する2023年のウェブ制作 - ICS MEDIA
ウェブ業界の当たり前だと思っていることでも、他社の人には違う常識があるかもしれません。自分が業界多数の傾向と違うところはどこなのか……。この連載ではアンケートデータから国内のウェブ業界の傾向を分析します。
投稿者

トライデントコンピュータ専門学校Webデザイン学科1年生です。
Webデザイナー目指して頑張っています。
パクチー大好き「パクチスト」です。

でんでんをフォローする
HTML+CSS
シェアする

コメント

タイトルとURLをコピーしました