Transiciones

Clase 29 de 32Curso de CSS

Resumen

Las transiciones en CSS mejoran la experiencia visual: suavizan cambios de color, tamaño y posición sin brusquedades. Aquí verás cómo aplicar transition a botones y cajas, cómo combinar cambios con transform y cómo controlar la velocidad con linear, ease y ease-in-out. Además, se muestra un caso de depuración frecuente con la cascada y múltiples transform.

¿Por qué usar transiciones en CSS?

Las transiciones hacen que los cambios se sientan suaves y naturales. Evitan saltos abruptos al pasar el hover y aportan claridad visual.

  • Suavizar color de fondo con background-color en 0.3s.
  • Escalar elementos con transform: scale para dar feedback.
  • Mover en el eje X con translateX y controlar el tiempo.
  • Acompañar el movimiento con box-shadow para dar profundidad.

¿Qué estilos base necesitas en los botones?

Primero se definen estilos base para separación y legibilidad. Usa display: flex, gap y margin-bottom.

/* Contenedor de botones */
.buttons {
  display: flex;
  gap: 12px;
  margin-bottom: 40px;
}

/* Botón base */
.button {
  padding: 12px 24px;
  font-size: 16px; /* o 1rem */
  cursor: pointer;
  background: #3498DB;
  color: #fff;
  border: 0;
}

¿Cómo aplicar transiciones en botones con hover?

La clave está en declarar la propiedad a animar, la duración y la función de aceleración. Así, el cambio no se ve brusco.

¿Cómo suavizar el cambio de color?

Para que el color de fondo cambie de forma fluida con hover, anima background-color.

/* Transición del color de fondo */
.button-color {
  transition: background-color 0.3s ease;
}
.button-color:hover {
  background-color: #E74C3C; /* rojo suave */
}

¿Cómo hacer que el botón crezca?

Si buscas un efecto de crecimiento, anima transform con scale.

/* Transición de tamaño */
.button-size {
  transition: transform 0.3s ease;
}
.button-size:hover {
  transform: scale(1.1);
}

¿Cómo combinar color, sombra y escala en un botón?

Cuando un mismo elemento cambia varias propiedades, puedes usar all para cubrirlas. Evita declarar múltiples transform separados.

/* Botón con varios cambios al hover */
.button-all {
  transition: all 0.3s ease;
}
.button-all:hover {
  background-color: #2ECC71; /* verde */
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
  transform: scale(1.1); /* se decidió escalar y no trasladar */
}

¿Cómo depurar conflictos con transform y la cascada?

  • No declares dos reglas de transform en el mismo selector al mismo tiempo: una pisará a la otra.
  • Si necesitas combinar, usa un solo transform: por ejemplo, transform: translateY(-5px) scale(1.1);.
  • Usa las herramientas del navegador: fuerza el hover en el inspector y revisa qué reglas están activas.

¿Cómo controlar el timing con linear, ease y ease-in-out?

El tiempo y la aceleración definen la sensación del movimiento. Con transform y transition puedes mover una caja 200px a la derecha y ver cómo varía la velocidad según linear, ease y ease-in-out.

/* Contenedor de ejemplos de timing */
.timing-container {
  display: flex;
  gap: 20px;
  margin-bottom: 40px;
}

/* Caja base */
.box {
  width: 100px;
  height: 100px;
  background: #9B59B6; /* morado */
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

/* Variantes de timing */
.timing-linear { transition: transform 1s linear; }
.timing-ease { transition: transform 1s ease; }
.timing-ease-in-out { transition: transform 1s ease-in-out; }

/* Disparador común */
.box:hover { transform: translateX(200px); }
  • linear: velocidad uniforme todo el tiempo.
  • ease: aceleración natural, empieza lento y acelera.
  • ease-in-out: suave al inicio y al final, rápido en medio.

Consejos rápidos: - Define claramente la propiedad: background-color o transform, según el efecto. - Ajusta la duración: 0.3s para hover en UI se siente fluido. - Usa box-shadow para reforzar la sensación de elevación. - Evita conflictos: un único transform por selector al final de la cascada.

¿Te gustaría ver más variantes con cubic-bezier o combinar scale y translate en un solo transform? Cuéntalo en los comentarios y comparte qué efectos aplicarías en tus botones o tarjetas.