Etiqueta <dialog>
En HTML moderno tenemos una etiqueta que nos permite crear mensajes emergentes sin tanto JavaScript.
La etiqueta <dialog>
nos ayuda a crear diálogos de diferente naturaleza.
Con HTML puro
Cuando creamos un elemento con esta etiqueta, por defecto no se mostrará en la pantalla:
Si queremos que se muestre desde un inicio, podemos agregarle el atributo open
:
Usando JavaScript
Aunque esta etiqueta usualmente los queremos usar cuando se trata de mensajes que aparecen y desaparecen.
Lo podemos lograr agregando algunos elementos y un poco de JavaScript.
Ahora tenemos un diálogo que se abre mediante un botón.
Aunque todavía nos falta cerrarlo de alguna manera. Una de las más fáciles es creando un formulario dentro del diálogo y agregarle el atributo method="dialog"
:
También podemos cerrarlo mediante JavaScript:
Los diálogos tienen dos métodos para ser abiertos mediante código, una de ellas es la que acabamos de ver: open()
.
La otra es showModal()
, que nos permite obstaculizar la vista detrás del diálogo:
Otra de las diferencias es que podemos cerrar el diálogo utilizando la tecla Esc
sin añadir código extra.
Sobre los estilos
Por defecto cuando el diálogo no se encuentra abierto, es afectado por display: none;
. Cuando se abre utiliza display: block;
.
Esto puede provocar que algunas animaciones no funcionen correctamente.
Por ejemplo, los estilos siguientes tratan de agregar animaciones al momento de abrir y cerrar el diálogo:
Por ahora sólo podemos ver la animación al momento de cerrar el diálogo a pesar de que estamos animando ambas.
Para hacer que funcione correctamente debemos agregar @starting-style
:
Cuando animamos propiedades de <dialog>
mediante @keyframes
no necesitamos usar
@starting-style
.
Ver código completo
Parte de este código lo podemos encontrar en la documentación oficial de la etiqueta <dialog>
1