Generador de Animaciones CSS

Siguiente

Escribir @keyframes desde cero es tedioso: eliges porcentajes, adivinas propiedades, recargas, observas, ajustas. Este generador te ofrece seis animaciones listas (fundido, deslizar hacia arriba, rebote, giro, pulso y sacudida) y te permite configurar el nombre, la duración, el easing, el número de iteraciones y la dirección. El resultado se reproduce en tiempo real y, cuando estés satisfecho, puedes copiar el bloque @keyframes generado y la propiedad abreviada animation.

Cómo crear una animación CSS

  1. 1

    Elige una plantilla

    Elige una de las seis animaciones integradas: fundido, deslizar hacia arriba, rebote, giro, pulso o sacudida.

  2. 2

    Nombra la animación

    Dale a los keyframes un identificador CSS válido, como `cardIn` o `fadeIn`. El mismo nombre se usa en la abreviatura `animation`.

  3. 3

    Configura el tiempo y la repetición

    Duración en segundos, easing (ease, ease-in, ease-out, ease-in-out, linear o spring), número de iteraciones (1, 2, 3 o infinitas) y dirección (normal, reverse, alternate o alternate-reverse).

  4. 4

    Copia el CSS

    La regla `@keyframes` generada y la abreviatura `animation:`, listas para pegar en tu hoja de estilos.

Anatomía de una animación

@keyframes slide-in {
  0%   { transform: translateX(-100%); opacity: 0; }
  60%  { transform: translateX(10%);   opacity: 1; }
  100% { transform: translateX(0);     opacity: 1; }
}

.card {
  animation: slide-in 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

Ocho propiedades en la abreviatura: animation-name duration timing-function delay iteration-count direction fill-mode play-state.

Opciones de easing

El generador ofrece seis funciones de easing:

Easing cubic-bezier() Sensación
linear n/a Velocidad constante
ease-in 0.42, 0, 1, 1 Inicio lento, final rápido
ease-out 0, 0, 0.58, 1 Inicio rápido, final lento
ease-in-out 0.42, 0, 0.58, 1 Lento-rápido-lento
ease (predet.) 0.25, 0.1, 0.25, 1 Suave por defecto
spring 0.68, -0.55, 0.27, 1.55 Sobrepasa y se asienta

Anima las propiedades correctas

El navegador puede animar cualquier propiedad, pero solo unas pocas se animan con fluidez en la GPU sin provocar layout o pintura:

Baratas (solo composición): transform, opacity, filter.

Caras (layout/pintura): width, height, top, left, margin, padding, background-color.

Las animaciones a sesenta fotogramas por segundo sobre width y top son posibles en elementos pequeños, pero fallan en el móvil si animas muchas a la vez. Para movimientos complejos, prefiere siempre transform: translate(...) sobre top / left y transform: scale(...) sobre el ancho/alto animado.

will-change: úsalo con moderación

Indicar al navegador que preasigne una capa de composición puede ayudar a la fluidez:

.card { will-change: transform; }

Pero consume memoria. Aplícalo justo antes de que se dispare la animación y elimínalo al terminar. Fijar will-change: transform de forma permanente en muchos elementos puede perjudicar más que ayudar.

Movimiento reducido

Algunos usuarios son sensibles al movimiento y configuran preferencias del sistema:

@media (prefers-reduced-motion: reduce) {
  .card {
    animation: none;
  }
}

Respeta esta configuración. Ofrece un cambio de estado instantáneo o un fundido muy sutil como alternativa.

Preguntas frecuentes

CSS para movimiento simple, declarativo y único. Web Animations API (element.animate()) para temporización impulsada por JavaScript, keyframes dinámicos, pausa y control de reproducción. Ambos se ejecutan en el compositor; ninguno es inherentemente más rápido.

Casi siempre porque estás animando una propiedad que activa el layout (width, top, margin) en lugar de transform. Cambia a translate() y scale() y el tartamudeo generalmente desaparece.

Sí, animation: a 1s, b 1s 1s, c 1s 2s; ejecuta tres animaciones secuencialmente mediante retrasos escalonados. Este generador produce una sola animación, así que añade tú las entradas extra en la abreviatura. Para coreografías más complejas, usa la Web Animations API o una biblioteca como GSAP.

Hace que el elemento tome el estado from antes de que comience la animación (durante el retraso) y mantenga el estado to después de que termine. Sin both, el elemento vuelve a su estilo anterior a la animación cuando esta finaliza. El generador mantiene la abreviatura mínima; añade el fill mode tú mismo si lo necesitas.

Herramientas relacionadas