<dialog> ๋ ๋ชจ๋ฌ ํ์
์ ํ๊ทธ ํ ์ค๋ก ๊ตฌํํ ์ ์๋ HTML ์์์
๋๋ค. ESC ํค๋ก ์ฐฝ ๋ซ๊ธฐ, ํฌ์ปค์ค ํธ๋ฉ, ๋ฐฐ๊ฒฝ ์ด๋ก๊ฒ ์ฒ๋ฆฌ(::backdrop) ๋ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ ์ ๊ณต ํฉ๋๋ค.
Info: โ 2026๋ ํ์ฌ ๋ชจ๋ ๋ฉ์ด์ ๋ธ๋ผ์ฐ์ (Chrome / Edge / Firefox / Safari) ๊ฐ
<dialog>๋ฅผ ์ง์ํฉ๋๋ค (Baseline).
1. ๊ธฐ๋ณธํ ๊ตฌํ
<dialog open>
<p>์คํฌ๋ฆฝํธ ์์จ๋ ์ ๋ง ๋๋ค๊ตฌ?</p>
<form method="dialog">
<button>OK</button>
</form>
</dialog>
์คํํ๋ฉด
ok๋ฒํผ ํด๋ฆญ์ ์ฐฝ์ด ๋ซํ๋ค.
2. ์ค๋ฒ๋ ์ด ๋ฐฐ๊ฒฝ์ถ๊ฐ
<dialog>
<button autofocus>Close</button>
<p>์ด๋ฒ์ ๋ฐฐ๊ฒฝ์ ๋ฃ๊ธฐ</p>
</dialog>
<button>์์</button>
::backdrop {
background-image: linear-gradient(
45deg,
magenta,
rebeccapurple,
dodgerblue,
green
);
opacity: 0.75;
}
::backdrop ์ ํ์๋ dialog ์์์ ๋ฐฐ๊ฒฝ์์ ์ ํํ ์ ์๋ค.
์์ฃผ ์ฝ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ค
const dialog = document.querySelector("dialog");
const showButton = document.querySelector("dialog + button");
const closeButton = document.querySelector("dialog button");
// "Show the dialog" button opens the dialog modally
showButton.addEventListener("click", () => {
dialog.showModal();
});
// "Close" button closes the dialog
closeButton.addEventListener("click", () => {
dialog.close();
});
showModal(), close() ๋ dialog API ๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋์ด๋ค.
์คํํ๋ฉด
3. dialog API ์ ๋ฆฌ
| ๋ฉ์๋ / ์์ฑ | ์ค๋ช |
|---|---|
dialog.show() |
๋น๋ชจ๋ฌ ๋ก ์ด๊ธฐ (๋ฐฐ๊ฒฝ ํด๋ฆญ ๊ฐ๋ฅ, ํฌ์ปค์ค ํธ๋ฉ ์์) |
dialog.showModal() |
๋ชจ๋ฌ ๋ก ์ด๊ธฐ (๋ฐฐ๊ฒฝ ํด๋ฆญ ๋งํ, ํฌ์ปค์ค ํธ๋ฉ, ESC ๋ซ๊ธฐ) |
dialog.close(returnValue?) |
๋ซ๊ธฐ. ํผ ๊ฒฐ๊ณผ๋ฅผ ์ธ์๋ก ์ ๋ฌ ๊ฐ๋ฅ |
dialog.returnValue |
๋ง์ง๋ง close() ์ ์ ๋ฌ๋ ๊ฐ |
<form method="dialog"> |
์์ submit ๋ฒํผ์ด dialog ๋ฅผ ๋ซ์ (์คํฌ๋ฆฝํธ ๋ถํ์) |
::backdrop ์์ฌ ์์ |
showModal() ์ผ ๋๋ง ๋ํ๋๋ ๋ฐฐ๊ฒฝ โ CSS ๋ก ์คํ์ผ๋ง |
1. ์ด๋ฒคํธ
closeโ dialog ๊ฐ ๋ซํ ๋cancelโ ESC ํค๋ก ๋ซํ ๋ (์ด ๋จ๊ณ์์preventDefault()๋ก ๋ง์ ์ ์์)
4. 2025๋ ์ถ๊ฐ ๊ธฐ๋ฅ โ Light Dismiss
closedby ์์ฑ์ด ์ถ๊ฐ๋์ด ๋ฐ๊นฅ ์์ญ ํด๋ฆญ์ผ๋ก ๋ซ๊ธฐ ๋ฅผ ์ ์ธ์ ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
<dialog closedby="any">โฆ</dialog>
closedby ๊ฐ |
๋์ |
|---|---|
any |
๋ฐ๊นฅ ํด๋ฆญ / ESC / close() ๋ชจ๋๋ก ๋ซํ |
closerequest |
ESC ๋๋ close request ๋ก๋ง ๋ซํ (๊ธฐ๋ณธ ๋ชจ๋ฌ๊ณผ ์ ์ฌ) |
none |
๋ช
์์ close() ํธ์ถ๋ก๋ง ๋ซํ |
HTMLDialogElement.requestClose() ๋ฉ์๋๋ ํจ๊ป ์ถ๊ฐ๋จ โ cancel ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉฐ ๋ซ๊ธฐ ์์ฒญ์ ๋ณด๋
๋๋ค.
Info: โ ๏ธ
closedby/requestClose()๋ ๋น๊ต์ ์ ๊ท ๊ธฐ๋ฅ โ ์ฌ์ฉ ์ Can I Use ์์ ๋์ ๋ธ๋ผ์ฐ์ ์ง์ ํ์ธ ๊ถ์ฅ.