Saltar al contenido

Animaciones CSS

Las animaciones CSS proporcionan una forma sofisticada de mejorar la experiencia del usuario con transiciones y efectos suaves y visualmente atractivos. En esta guía completa, exploramos los matices de las animaciones CSS, proporcionando explicaciones detalladas, ejemplos y mejores prácticas para crear diseños dinámicos y responsivos.

Introducción a las animaciones CSS

Las animaciones CSS permiten a los desarrolladores web animar elementos HTML sin depender de JavaScript. Se definen mediante fotogramas clave, que especifican los estilos en varios puntos de la secuencia de animación.

Ejemplo básico de animación CSS


html
<div class="animated-box"></div>

<style>
  .animated-box {
    width: 100px;
    height: 100px;
    background-color: red;
    animation: move 4s infinite;
  }

  @keyframes move {
    0% { transform: translateX(0); }
    50% { transform: translateX(200px); }
    100% { transform: translateX(0); }
  }
</style>

advertencia

Prueba siempre las animaciones en diferentes dispositivos y navegadores para garantizar un rendimiento fluido.

Propiedades clave de las animaciones CSS

  • animation-name: Especifica el nombre de los fotogramas clave.
  • animation-duration: Define la duración de la animación.
  • animation-timing-function: Establece la curva de velocidad de la animación.
  • animation-delay: Retrasa el inicio de la animación.
  • animation-iteration-count: Define el número de veces que debe reproducirse la animación.
  • animation-direction: Especifica si la animación debe reproducirse en reversa en ciclos alternos.

Aplicar múltiples animaciones

Puedes aplicar múltiples animaciones a un solo elemento separándolas con comas.


html
<div class="multi-animated-box"></div>

<style>
  .multi-animated-box {
    width: 100px;
    height: 100px;
    background-color: blue;
    animation: move 4s infinite, rotate 2s infinite;
  }

  @keyframes move {
    0% { transform: translateX(0); }
    50% { transform: translateX(200px); }
    100% { transform: translateX(0); }
  }

  @keyframes rotate {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
  }
</style>

Técnicas avanzadas

Animaciones responsivas

Asegúrate de que las animaciones sean responsivas y se adapten a diferentes tamaños de pantalla.


html
<div class="responsive-box"></div>

<style>
  .responsive-box {
    width: 50vw;
    height: 50vw;
    background-color: green;
    animation: resize 4s infinite;
  }

  @keyframes resize {
    0% { width: 50vw; height: 50vw; }
    50% { width: 70vw; height: 70vw; }
    100% { width: 50vw; height: 50vw; }
  }
</style>

Combinar transformaciones

Combina múltiples propiedades de transformación para crear animaciones complejas.


html
<div class="complex-transform-box"></div>

<style>
  .complex-transform-box {
    width: 100px;
    height: 100px;
    background-color: yellow;
    animation: complexTransform 5s infinite;
  }

  @keyframes complexTransform {
    0% {
      transform: translateX(0) rotate(0deg) scale(1);
    }
    50% {
      transform: translateX(200px) rotate(180deg) scale(1.5);
    }
    100% {
      transform: translateX(0) rotate(360deg) scale(1);
    }
  }
</style>

Modos de relleno de animación

La propiedad animation-fill-mode define cómo una animación CSS aplica estilos a su objetivo antes y después de su ejecución.


html
<div class="fill-mode-box"></div>

<style>
  .fill-mode-box {
    width: 100px;
    height: 100px;
    background-color: purple;
    animation: fillMode 3s forwards;
  }

  @keyframes fillMode {
    0% { background-color: purple; }
    100% { background-color: orange; }
  }
</style>

Retardos y funciones de temporización de animación

Utiliza retardos y funciones de temporización de animación para controlar el ritmo y el inicio de las animaciones.


html
<div class="timing-function-box"></div>

<style>
  .timing-function-box {
    width: 100px;
    height: 100px;
    background-color: pink;
    animation: timingFunction 4s ease-in-out infinite;
  }

  @keyframes timingFunction {
    0% { transform: translateY(0); }
    50% { transform: translateY(200px); }
    100% { transform: translateY(0); }
  }
</style>

Mejores prácticas para animaciones CSS

  1. Minimizar el uso de CPU: Mantén las animaciones simples para evitar un uso excesivo de la CPU, lo que puede degradar el rendimiento, especialmente en dispositivos móviles.
  2. Usar aceleración por hardware: Utiliza las propiedades transform y opacity para aprovechar la aceleración de la GPU.
  3. Soluciones alternativas (Fallbacks): Proporciona estilos alternativos para navegadores que no admiten animaciones.
  4. Pruebas de rendimiento: Prueba las animaciones en diferentes dispositivos y navegadores para garantizar un rendimiento fluido.

información

Puedes usar JavaScript para crear animaciones más interactivas. Consulta Animaciones con JavaScript.

Ejemplo de una animación bien optimizada


html
<div class="optimized-box"></div>

<style>
  .optimized-box {
    width: 100px;
    height: 100px;
    background-color: cyan;
    animation: optimizedMove 3s ease-in-out infinite;
  }

  @keyframes optimizedMove {
    0% { transform: translateY(0) scale(1); }
    50% { transform: translateY(200px) scale(1.2); }
    100% { transform: translateY(0) scale(1); }
  }
</style>

Conclusión

Las animaciones CSS son una herramienta poderosa para crear experiencias web dinámicas y atractivas. Al dominar los fotogramas clave, las propiedades de animación y las técnicas avanzadas, los desarrolladores pueden producir animaciones de calidad profesional que mejoren la interacción del usuario. Experimenta con diferentes animaciones, realiza pruebas exhaustivas y sigue las mejores prácticas para obtener los mejores resultados.

Práctica

¿Cuáles de las siguientes afirmaciones sobre las animaciones CSS son correctas?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.