💨

Tailwind CSSだけで作る<dialog>

2024/04/21に公開

Headless UIやReactを入れるのが面倒だったので、
Tailwind CSSとVanilla JSだけでダイアログを作った

素の<dialog>っぽさを消して、シャドウを当てたりもできる

タッチデバイス向けに、backdrop(ダイアログの外側)をクリックしたら閉じるようにしてある

const dialogContentElement = document.createElement("div");
dialogContentElement.classList.add("p-4");
dialogContentElement.addEventListener("click", (event) => {
  event.stopPropagation();
});
dialogContentElement.append(/* ダイアログ内のコンテンツ */);

const dialogElement = document.createElement("dialog");
dialogElement.classList.add("rounded-lg", "shadow-xl");
// backdropをクリックしたら閉じる
dialogElement.addEventListener("click", () => {
  dialogElement.close();
});
dialogElement.append(dialogContentElement);

const buttonElement = document.createElement("button");
buttonElement.textContent = "Open";
buttonElement.addEventListener("click", () => {
  dialogElement.showModal();
});

document.body.append(buttonElement, dialogElement);

素のJavaScriptやHTML/CSSでもけっこう個人開発できる
GitHubの草をOrganizationごとに色分けして見る
https://rainbow.hata6502.com/

Discussion