Componentes Reales (Modales)
Redactado por
Sebastian V. Fecha de publicación
04/04/2024
Tiempo de lectura
6 min
Tema
CSS Transitions
El arte de aparecer y desaparecer
Hasta ahora hemos visto cómo animar cosas cuando pasamos el cursor o damos focus. Pero el uso más poderoso de las transiciones en el mundo real es gestionar la entrada y salida de componentes como Modales, Tooltips, Dropdowns y Menús Laterales (Sidebars).
El problema de display: none
La intuición inicial de cualquier desarrollador es usar display: none para ocultar un modal y cambiarlo a display: block cuando quiere abrirlo. El problema es que la propiedad display NO es animable. Si la cambias, el navegador ignorará la transición y el elemento aparecerá o desaparecerá de golpe.
La solución profesional: Opacity + Visibility + Transform
Para lograr que un componente aparezca suavemente y no intercepte clics cuando está oculto, usamos este trío dinámico:
- ✦ opacity: 0 / 1: Controla el desvanecimiento visual.
- ✦ visibility: hidden / visible: Evita que el elemento oculto pueda ser clickeado o enfocado por el teclado, sin sacarlo del flujo del renderizado.
- ✦ transform: Controla de dónde proviene el componente (por ejemplo, desde abajo o más pequeño).
Consejo profesional
Al cerrar un modal, asegúrate de que la transición tenga tiempo suficiente para completarse antes de que cualquier script JS remueva el elemento del DOM.
Ejemplo práctico
<div class="modal-container">
<button class="toggle-btn" onclick="document.getElementById('modal').classList.toggle('active')">
Abrir Modal
</button>
</div>
<!-- El modal existe en el DOM, pero está oculto visualmente -->
<div class="modal-overlay" id="modal">
<div class="modal-content">
<h3>¡Hola! Soy un Modal</h3>
<p>He entrado a escena suavemente escalando desde el centro.</p>
<button class="close-btn" onclick="document.getElementById('modal').classList.remove('active')">Cerrar</button>
</div>
</div> Haz clic en el botón para alternar el estado del modal. Observa la coreografía: el fondo se oscurece y la tarjeta salta un poco (gracias al cubic-bezier) para llamar tu atención.
Errores comunes
Practica lo aprendido
Crea componentes robustos que no desaparezcan de la nada.