En este tutorial construimos un componente de “tarjetas expandibles” con HTML, CSS y JavaScript puro. Es perfecto para destacar categorías, fotos o proyectos en un portafolio. Incluye accesibilidad por teclado y trucos de rendimiento.
¿Qué son las Expanding Cards?
Son un conjunto de paneles en fila (o columna en móvil) que se expanden suavemente cuando el usuario interactúa (clic o teclado). La expansión atrae la atención a un elemento sin recargar la interfaz. Ideal para:
-
Portafolios (UX/UI, foto, 3D, arquitectura)
-
Secciones de “categorías destacadas” en blogs o tiendas
-
Landing pages minimalistas con hero gallery
Vista previa del resultado
Cada panel muestra una imagen a pantalla ancha, un título y un gradiente para mejorar la legibilidad. Al activar una tarjeta, su ancho aumenta y el resto se contrae.
Sugerencia: usa 4–6 paneles para un balance visual óptimo.
Estructura del proyecto
Crea una carpeta con tres archivos:
-
index.html
-
style.css
-
script.js
1) HTML básico
2) CSS (estilo y transición)
3) JavaScript (interacción + accesibilidad)
Cómo correrlo: guarda los 3 archivos y abre index.html en tu navegador.
Buenas prácticas de accesibilidad (A11y)
-
Usa button (no div) para que sean focusables y anuncien interacción.
-
Añade role="list" al contenedor y role="listitem" a cada tarjeta para una estructura semántica.
-
Sin ratón, el usuario puede navegar con Tab y activar con Enter o Espacio.
-
Asegura contraste suficiente: el gradiente oscuro ayuda a que el texto se lea sobre la imagen.
Rendimiento y calidad de imagen
-
Prefiere imágenes optimizadas (formato AVIF/WebP si tu flujo lo permite).
-
Usa tamaños coherentes: 1600px de ancho suele ser suficiente para una imagen principal.
-
Si alojas las imágenes tú, añade loading="lazy" en <img> (si las usas) o sirve recursos con HTTP caching.
Finalmente debe quedar algo así
Expanding Cards