Contenido del curso

Animaciones CSS en una card con hover

Resumen

Animar una card con CSS es una de las formas más sencillas de darle vida a una interfaz sin recurrir a JavaScript. Con solo combinar transition, transform y el pseudo selector :hover, puedes lograr que una tarjeta suba, proyecte sombra y mueva su texto de manera coordinada cuando el usuario pasa el cursor por encima.

Esta guía práctica te muestra paso a paso cómo construir esa animación en una tarjeta real, ideal si estás aprendiendo front end y quieres mejorar la experiencia visual de tus proyectos.

Cómo defines la estructura base de la card en CSS

Antes de animar, necesitas un contenedor con estilos sólidos. La idea es que la tarjeta se vea limpia en su estado normal y que las transiciones tengan algo concreto sobre lo que actuar.

En la clase .card se definen las propiedades fundamentales que dan forma y respiro al componente.

  • width: 300px para fijar el ancho de la tarjeta.
  • padding: 30px para crear espacio interno entre el borde y el contenido.
  • background-color: white como color de fondo neutro.
  • border: 2px solid #f1f1f1 para un contorno gris muy claro.
  • border-radius: 10px para suavizar las esquinas.
  • cursor: pointer para indicar que el elemento es interactivo.

Con estas reglas la card ya se ve presentable, pero todavía es estática. Aquí entra la magia de las transiciones.

Qué propiedades animar con transition y por qué

La propiedad transition le dice al navegador qué cambios deben ocurrir de forma gradual y a qué velocidad. La clave está en aplicarla en el estado base, no en el :hover, para que la animación funcione tanto al entrar como al salir.

En este ejemplo se animan tres propiedades dentro de .card [01:08]:

  • transform 0.3s ease para el desplazamiento.
  • box-shadow 0.3s ease para la sombra.
  • border-color 0.3s ease para el cambio de color del borde.

¿Qué hace la función ease en una transición CSS? Define la curva de aceleración del cambio. Ease arranca lento, acelera en medio y termina lento, lo que da una sensación más natural que un cambio lineal.

Mantener los tres tiempos en 0.3s es intencional: cuando todas las propiedades cambian al mismo ritmo, la animación se siente coherente.

Cómo levantas la tarjeta con transform y translate en hover

El efecto de elevación se logra combinando un desplazamiento vertical con una sombra más pronunciada. En .card:hover aplicas tres cambios simultáneos.

  • transform: translateY(-10px) para subir la tarjeta 10 píxeles.
  • box-shadow: 0 10px 30px rgba(0,0,0,0.2) para proyectar una sombra suave debajo.
  • border-color en azul para reforzar el estado activo.

El valor negativo en translateY es lo que hace que la card suba en lugar de bajar, porque el eje Y crece hacia abajo en CSS. La sombra con opacidad 0.2 simula la profundidad sin ser invasiva.

¿Por qué usar translateY en vez de cambiar el margin? Porque transform se ejecuta en la GPU y no recalcula el layout de la página. Es más eficiente y evita saltos visuales en otros elementos.

Cómo animas el texto interno con color y delay

Dentro de la card hay dos elementos de texto: un h3 como título y un p como descripción. Ambos reciben tratamiento independiente para crear una jerarquía animada.

Cómo cambias el color del título al hacer hover

En .card h3 defines el color base y la transición [02:45].

  • color: #2c3e50 como gris oscuro inicial.
  • margin-bottom: 10px para separar el título del párrafo.
  • transition: color 0.3s ease para suavizar el cambio.

Luego, en .card:hover h3 cambias el color a #3498db, ese azul que ya venías usando en el borde. El resultado es un título que se ilumina cuando el usuario interactúa.

Cómo aplicas un delay al párrafo para crear secuencia

El párrafo recibe un truco interesante: una transición con retraso. En .card p defines:

  • color: #7f8c8d como gris medio.
  • transition: transform 0.3s ease 0.1s con un delay de 0.1 segundos.

Ese cuarto valor en transition es el delay. Le indica al navegador que espere 100 milisegundos antes de empezar a animar el párrafo. Después, en .card:hover p aplicas transform: translateX(10px) para que el texto se deslice hacia la derecha.

¿Para qué sirve agregar un delay en una animación CSS? Para escalonar movimientos y crear sensación de coreografía. Aquí, la card sube primero y el párrafo se desplaza después, lo que se siente más pulido que un movimiento simultáneo.

Qué resultado obtienes al combinar todo

Cuando pasas el cursor por la tarjeta, varias cosas ocurren en orden controlado: la card se eleva 10 píxeles, su sombra crece, el borde se vuelve azul, el título cambia de color y, una décima de segundo después, el párrafo se desliza a la derecha.

Todo esto sin una sola línea de JavaScript, solo con transition, transform, :hover y un buen manejo de tiempos. Es un ejercicio que puedes replicar en botones, cards de productos, perfiles de usuario o cualquier componente que merezca un poco de movimiento.

¿Qué otras propiedades animarías tú en esta tarjeta? Cuéntame en los comentarios cómo la adaptarías a tu propio proyecto.