DEV Community

Cover image for Crear modal de diálogo nativo con HTML
Jordi Ayala
Jordi Ayala

Posted on • Edited on • Originally published at asjordi.dev

2

Crear modal de diálogo nativo con HTML

Generalmente para crear un modal se utiliza JavaScript, pero actualmente se puede crear un modal de diálogo nativo utilizando solo HTML, por lo que resulta interesante conocerlo.

La estructura del elemento dialog es la siguiente, considerando que puede tener un estado que indica si esta abierto o no.

<dialog open>
    <p>Hola!</p>
</dialog>
Enter fullscreen mode Exit fullscreen mode

El código anterior renderiza el modal de diálogo con el texto "Hola! Soy un modal de diálogo" y el estado abierto por defecto.

Image description

Abrir dinámicamente el modal

Usualmente un modal se abre con una determinada acción, por ejemplo un clic en un botón. Para esto el elemento dialog tiene una API de JavaScript que nos permite abrirlo de forma dinámica. Solo es necesario asignarle un identificador.

<dialog id="mydialog">
    <p>Hola! Solo me muestro con un clic</p>
</dialog>
Enter fullscreen mode Exit fullscreen mode

Asignado el identificador podemos abrirlo de la siguiente forma.

window.mydialog.show();
Enter fullscreen mode Exit fullscreen mode

Asi mismo, se puede abrir de una manera más explicita utilizando el método showModal(). Este método abre el modal de diálogo de forma modal, y permite tener un fondo y centrar el modal de diálogo.

window.mydialog.showModal();
Enter fullscreen mode Exit fullscreen mode

Hasta aquí puede resultar raro mostrar el modal de diálogo directamente, por lo que se puede agregar un botón para esta acción.

<button onclick="window.mydialog.showModal();">Mostrar modal</button>
<dialog id="mydialog">
    <p>Hola! Solo me muestro con un clic</p>
</dialog>
Enter fullscreen mode Exit fullscreen mode

Cerrar el modal

Hay dos maneras de cerrar el modal de diálogo, la primera es utilizando el método close() de la API de JavaScript.

<button onclick='window.mydialog.close();'>Cerrar modal</button>
Enter fullscreen mode Exit fullscreen mode

Mientras que la segunda manera es utilizando un formulario con el método dialog dentro del elemento dialog, tal y como se muestra a continuación.

<form method="dialog">
    <button>Cerrar</button>
</form>
Enter fullscreen mode Exit fullscreen mode

Personalizar el modal

El elemento dialog tiene una serie de atributos que nos permiten personalizar el modal de diálogo, como el tamaño, el color de fondo, el color de texto, etc.

A continuación se agrega un estilo para modificar el color de fondo utilizando el pseudo-elemento ::backdrop.

dialog::backdrop {
  background: rgba(255, 255, 0, 0.1);
}
Enter fullscreen mode Exit fullscreen mode

Ahora se debería ver de la siguiente manera.

Image description

El elemento dialog tiene un soporte muy bueno, por lo que no debería haber problemas para utilizarlo. Se puede consultar en el sitio caniuse.com.

En general resulta interesante conocer este elemento, ya que permite crear un modal de diálogo nativo utilizando solo HTML sin la necesidad de utilizar JavaScript, además de que puede ser personalizado.

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

Top comments (0)

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay