<dialog>
で実装するモーダルで背景 (オーバーレイ) をクリックしても閉じるようにしたい時。::backdrop
擬似要素にはイベントを登録できないので少しだけ困った。
コンテナ要素を追加する方法
<dialog>
直下にコンテナ要素を追加し、<dialog>
クリック時にMouseEvent.target
がそのコンテナ要素でなければ閉じる、という方法。
コンテナ要素のサイズを親要素いっぱいに広げる必要がある。
Element.getBoundingClientRect()
で<dialog>
の寸法を取得し、MouseEvent.clientX
・MouseEvent.clientY
がその中に収まっているか否かで背景をクリックしたかを判定する方法。
コンテナ要素を追加する必要が無いので個人的にはこっちが好み。
1