Estilos de modales y diálogos
Aplique estilos a elementos HTML dialog nativos y a modales personalizados con fondo superpuesto, posicionamiento y animaciones.
Estilos de modales y diálogos es una lección gratuita de CSS Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CSS Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CSS Academy incluye 4 lecciones en total.
Elemento dialog nativo
El elemento <dialog> de HTML proporciona un comportamiento modal integrado: gestión del foco, cierre con Escape y la API showModal() / close(). Estilícelo con CSS en lugar de crear desde cero la estructura de un modal personalizado.
Estilizar el backdrop
El pseudoelemento ::backdrop permite aplicar estilos a la superposición situada detrás de un <dialog> abierto. Aplique un fondo semitransparente: dialog::backdrop { background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); }. No necesita un div contenedor.
Diseño del dialog
Centre los dialogs con CSS: dialog { margin: auto; max-width: min(90vw, 640px); max-height: 90vh; overflow-y: auto; }. Usar margin: auto en un dialog lo coloca en el centro de la ventana gráfica sin necesidad de posicionarlo con JS.
Desplazamiento y overflow
Establezca overflow-y: auto en el propio dialog para gestionar el contenido extenso. Establezca overflow: hidden en body cuando se abra el modal para evitar el desplazamiento del fondo; añada y quite una clase con JavaScript para alternar este comportamiento.
Animación con CSS
Anime la entrada del dialog mediante @starting-style (Chrome 117+) para crear animaciones de entrada solo con CSS, sin JavaScript. Para ofrecer una compatibilidad más amplia, añada una clase open con JavaScript y use transition sobre transform y opacity: slide-up desde translateY(20px) hasta translateY(0).
Desafío: animar el cierre
Animar el cierre de un dialog es complicado: el dialog se oculta inmediatamente al ejecutar close(). Puede usar la API de popover, que admite animaciones de cierre de forma nativa, o interceptar el cierre con JavaScript, reproducir la clase de animación de salida y llamar a close() cuando termine la animación.
Gestión de z-index
Los dialogs se abren por encima de todo el contenido de la página. Evite las guerras de z-index utilizando el contexto de apilamiento nativo del elemento dialog: se muestra en la top layer, por encima de todos los valores de z-index de CSS, sin necesidad de establecer z-index en el propio dialog.
Dialog adaptable
En móviles, deslice los dialogs desde la parte inferior como una hoja: dialog { margin: auto auto 0; width: 100%; border-radius: 16px 16px 0 0; max-height: 90vh; }. En escritorio, céntrelos como un modal tradicional usando el patrón margin: auto.
Gestión del foco
El elemento dialog nativo mueve automáticamente el foco al primer elemento enfocable de su interior al abrirse. Asegúrese de que el orden de tabulación dentro del dialog sea lógico. Añada un botón de cierre que devuelva el foco al elemento que activó el dialog cuando este se cierre, para mantener un flujo de navegación correcto con el teclado.
Atributos de accesibilidad
Añada aria-labelledby apuntando al título del dialog y aria-describedby apuntando a su descripción. El rol del dialog es implícito en <dialog>. Los lectores de pantalla anuncian estas etiquetas cuando el foco entra en el dialog.
Patrón de dialog de confirmación
Los dialogs de confirmación necesitan: un título con una pregunta clara, una breve descripción del impacto, un botón de acción destructiva (rojo y alineado a la derecha) y un botón de cancelación (alineado a la izquierda o secundario). Use autofocus en el botón de cancelación para que la opción segura sea la interacción de teclado predeterminada.
Comprobación de conocimientos
¿Qué ventaja ofrece usar el elemento <dialog> nativo frente a un modal personalizado basado en div?
Resumen
El elemento dialog nativo, junto con ::backdrop, el centrado mediante margin: auto, el control del overflow, las animaciones CSS de entrada y la gestión del foco, proporciona un patrón de modal totalmente accesible y controlado por CSS. Los diseños adaptables en forma de hoja para móviles y los atributos ARIA adecuados completan un componente dialog listo para producción.
Aprende CSS con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 40
- Lecciones
- 159
Preguntas frecuentes
¿La lección «Estilos de modales y diálogos» es gratis?
Sí — el texto completo de «Estilos de modales y diálogos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CSS Academy, actualiza a CoddyKit PRO. El curso de CSS Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Estilos de modales y diálogos»?
Aplique estilos a elementos HTML dialog nativos y a modales personalizados con fondo superpuesto, posicionamiento y animaciones. Practicas CSS Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CSS Academy?
No se requiere experiencia previa. CSS Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Estilos de modales y diálogos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CSS Academy?
Sí. Cada lección de CSS Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Componente de tarjeta con propiedades personalizadas de CSS
- Estilos de modales y diálogos
- Patrones de dropdown y popover
- Componente de pestañas con el hack :checked frente a JS