Elemento HTML <dialog>
Olá a todos!
Existe um elemento que eu acho muito interessante e simples no HTML chamado <dialog>
. Este elemento representa uma caixa de diálogo ou janela que pode ser usada para criar pop-ups modais, alertas e outros tipos de interações com o usuário, porém ele não parece ser muito popular na maioria dos projetos ou sequer conhecido.
Para mostrar ou esconder o elemento <dialog>
, você pode usar os métodos showModal()
(ou simplesmente show()
, tendo esse um comportamento diferente do anterior) e close()
do elemento. Por exemplo, para mostrar uma caixa de diálogo quando o usuário clica em um botão, você pode usar o seguinte código:
<dialog id="dialog-box">
<!-- Conteúdo da caixa de diálogo -->
<button onclick="document.getElementById('dialog-box').close()">Close</button>
</dialog>
<button onclick="document.getElementById('dialog-box').showModal()">Show</button>
Esse elemento tem uma interação nativa muito interessante com o elemento <form>
, escurece o restante da página automaticamente (de forma personalizável com o pseudo-elemento ::backdrop), fecha quando a tecla ESC é pressionada e por ser um elemento de top layer, ele impede a navegação no restante da página com a tecla TAB permitindo-a somente nos elementos dentro do dialog.
Claro, ele não é perfeito. O suporte dele em navegadores como o Safari é bem recente (a partir da versão 15.4, de 2022) e no Firefox é necessário habilitar a opção dom.dialog_element.enabled em about:config , o que torna o uso de polyfills quase obrigatório para usá-lo. Além disso, ele não fecha automaticamente ao clicar fora do elemento no modo modal, mas em comparação à sua simplicidade de uso, ele é um elemento que vale a pena conhecer.