Generador de animaciones CSS

Construye animaciones CSS @keyframes visualmente · elige una plantilla o personaliza la duración, las transformaciones y las curvas. Copia código listo para producción.

Preajustes

Parámetros

Vista previa

Caja

CSS generado

Cómo usar

  1. Elige un preajuste de animación: selecciona entre las animaciones habituales, fundido, deslizamiento, rebote, rotación, pulsación, sacudida y más.
  2. Personaliza la duración y el comportamiento: ajusta duración, retraso, función de easing, número de iteraciones y fill mode.
  3. Copia el CSS: la definición @keyframes completa y la propiedad abreviada animation están listas para pegarse en tu hoja de estilo.

¿Por qué usar el generador de animaciones CSS?

Las animaciones CSS dan vida a las interfaces, atraen la atención hacia los elementos clave, dan retroalimentación visual y crean experiencias de usuario cuidadas. Escribir reglas @keyframes a mano exige conocer la sintaxis correcta, los nombres de curvas y las combinaciones de propiedades adecuadas. Este generador ofrece preajustes de animación cuidados con vista previa en directo y te permite ajustar cada parámetro, produciendo CSS listo para producción sin JavaScript ni biblioteca de animación.

Funcionalidades

Preguntas frecuentes

¿Cuál es la diferencia entre animación y transición en CSS?

Las transiciones CSS se disparan con cambios de estado (hover, focus, cambio de clase) y animan entre dos estados. Las animaciones CSS usan @keyframes para definir varios estados y se ejecutan independientemente de la interacción del usuario, pueden hacer bucle, invertirse y arrancar automáticamente.

¿Qué es animation-fill-mode y por qué es importante?

animation-fill-mode controla si el elemento conserva los estilos de la animación antes de que comience (backwards), después de terminar (forwards), o ambos. Sin forwards, el elemento vuelve bruscamente a su estilo original al final de la animación.

¿Las animaciones CSS son eficientes?

Las animaciones que solo usan transform y opacity se aceleran por GPU y son muy fluidas. Evita animar propiedades de diseño como width, height, margin o top/left, provocan recálculos de layout y pueden generar tirones. Mantente con transform y opacity para obtener 60 f/s.

Lo que las animaciones CSS realmente hacen

Las animaciones CSS interpolan una o más propiedades CSS entre fotogramas clave definidos a lo largo del tiempo, produciendo movimiento o cambio visible sin JavaScript. El modelo tiene dos piezas: las reglas @keyframes definen cómo se ve una animación en pasos basados en porcentajes (0% a 100%), y la propiedad abreviada animation (o sus primas longhand animation-duration, animation-delay, animation-timing-function, animation-iteration-count, animation-fill-mode) le dice al navegador cómo reproducir esa definición de fotogramas clave. El navegador maneja toda la interpolación, suavizado y temporización de fotogramas en C++, normalmente acelerado por GPU para los cambios de transform y opacity.

Las animaciones difieren de las transiciones CSS de dos maneras. Las transiciones se disparan cuando cambia el estado de un elemento (un hover, una clase alternada, un evento de focus) e interpolan entre exactamente dos valores: el antiguo y el nuevo. Las animaciones se ejecutan independientemente del estado, siguen un número arbitrario de pasos de fotogramas clave, pueden hacer bucles indefinidamente, pueden reproducirse en reversa, y pueden activarse, pausarse y reanudarse a través de CSS o JavaScript. Las transiciones son la herramienta correcta para «saltar de A a B en medio segundo»; las animaciones son la herramienta correcta para «hacer bucle a este pulso de atención para siempre» o «reproducir esta secuencia de entrada una vez cuando aparezca el elemento».

Para el diseño web moderno, las animaciones CSS reemplazan una enorme cantidad de lo que antes requería bibliotecas JavaScript. Los giradores, fades, slides hacia arriba, pulsos de atención, marcas de éxito: todos son ahora patrones CSS estándar. La compensación es la expresividad para secuencias complejas. Las animaciones CSS pueden hacer mucho pero dejan de ser convenientes alrededor de 5 a 7 pasos de fotogramas clave con cambios de propiedades sincronizados; para animaciones storyboard, secuencias vinculadas al scroll, o cualquier cosa dinámica que dependa del estado de JavaScript, las bibliotecas dedicadas (GSAP, Framer Motion, Web Animations API) siguen siendo la mejor opción.

Cómo funciona esta herramienta tras bambalinas

Cuando eliges un preset (por ejemplo, «bounce» o «fade-in») la herramienta carga una cadena @keyframes predefinida en el área de vista previa y aplica la propiedad de animación a la caja de vista previa. Los fotogramas clave son CSS real, no un formato personalizado: lo que ves es lo que obtienes para copiar. Los deslizadores actualizan los valores de tiempo de animación (duración, retraso, conteo de iteraciones) editando la propiedad animation en línea en tiempo real, así que la vista previa refleja cada cambio instantáneamente sin recargar la página.

La selección de función de suavizado usa los valores estándar de timing-function de CSS: linear (velocidad constante), ease (predeterminado, inicio y fin lentos), ease-in (inicio lento), ease-out (fin lento), ease-in-out (inicio y fin lentos), o cubic-bezier(x1, y1, x2, y2) para curvas personalizadas. La curva de animación visible es calculada por la implementación nativa de timing-function del navegador; la vista previa es la salida realmente renderizada por el navegador, no una simulación JavaScript.

La caja de código muestra el CSS completo que necesitas para soltar en una hoja de estilos: tanto el bloque @keyframes como la declaración .tu-clase { animation: ... }. Haz clic en «Copiar CSS» y ambos se escriben en tu portapapeles como un único bloque de texto. No se genera ningún archivo, ningún servidor procesa nada, y la herramienta no tiene backend al que llamar. La vista previa, la generación de código y la escritura en el portapapeles ocurren todo en JavaScript en tu dispositivo. Refresca la página y tu configuración personalizada se ha ido a menos que la hayas copiado primero.

Breve historia de la animación web

Flujos del mundo real

Trampas comunes y lo que significan

Privacidad: todo se ejecuta en tu navegador

Las herramientas generadoras de CSS vienen en dos sabores: páginas HTML simples ejecutando JavaScript del lado del cliente (privadas, rápidas) y editores en la nube que guardan tus proyectos (colaborativos pero con compensaciones de privacidad). Esta herramienta es del primer tipo. Tus valores de deslizador, tu preset seleccionado, tu CSS generado: todo permanece en tu sesión del navegador. Refresca la página y el estado se va a menos que hayas copiado el CSS primero. Ningún servidor almacena tus elecciones de animación, ningún análisis rastrea qué presets has probado, y no se necesita cuenta.

La propiedad de privacidad importa principalmente para el trabajo de diseño propietario. Un estudio prototipando animaciones para un proyecto cliente confidencial, un desarrollador trabajando en las micro-interacciones de una aplicación no anunciada, o un diseñador iterando en una campaña de marca: cualquier contexto donde el historial de iteración o el diseño en progreso podría filtrar información sobre el trabajo. Con esta herramienta, no hay nada capturado porque no se envía nada. Abre la pestaña de Red del navegador y verás cero solicitudes salientes durante el uso; solo la carga inicial de la página obtiene el HTML y JavaScript.

Cuándo otra herramienta es la opción correcta

Más preguntas frecuentes

¿Cómo hago que una animación se reproduzca solo una vez?

Establece animation-iteration-count: 1 (que es el valor predeterminado si no se especifica). Para hacer que el elemento se mantenga en el estado final de la animación después de que se complete (en lugar de volver al estilo original), también establece animation-fill-mode: forwards. La abreviatura combinada es animation: fadeIn 0.5s ease-out forwards;.

¿Puedo pausar y reanudar una animación?

Sí, con animation-play-state: paused (o running). Alterna esta propiedad vía JavaScript (por ejemplo, en un clic de botón) o en CSS vía :hover para patrones «pausa al pasar el ratón». La animación se congela en su punto actual y se reanuda desde ahí cuando se vuelve a running, sin pérdida de progreso. Esto funciona igual en transiciones pero solo la propiedad animation-play-state existe para control de pausa en tiempo de ejecución.

¿Cómo activo una animación en clic o scroll?

Para activadores de clic, alterna una clase CSS vía JavaScript: element.classList.toggle('animate-in'). La animación se ejecuta cuando se añade la clase. Para activadores de scroll, usa IntersectionObserver para detectar cuándo el elemento entra en el viewport y añade la clase entonces. Para navegadores modernos, las animaciones CSS impulsadas por scroll te permiten vincular el progreso de la animación directamente a la posición de scroll sin JavaScript vía animation-timeline: scroll().

¿Por qué mi animación parpadea o tartamudea?

La mayoría de problemas de parpadeo/tartamudeo vienen de animar propiedades que activan el diseño (width, height, top/left) en lugar de equivalentes basados en transform. Cambia de left: 0 a transform: translateX(0) y la animación debería suavizarse. Otras causas: sobredibujo por muchas capas semi-transparentes, thrashing de diseño por JavaScript leyendo y escribiendo estilos en el mismo fotograma, o sombras y filtros excesivos en el elemento animado.

¿Debería usar animaciones en interfaces críticas para la accesibilidad?

Úsalas, pero respeta prefers-reduced-motion. Las directrices WCAG 2.1 recomiendan proporcionar la opción de desactivar el movimiento no esencial. Envuelve las animaciones decorativas en @media (prefers-reduced-motion: no-preference) para que los usuarios que establecen la preferencia del SO obtengan una experiencia estática. Las animaciones de retroalimentación esenciales (indicadores de carga, sacudidas de error) pueden mantenerse; las puramente decorativas deberían ser opt-in para usuarios sensibles.

¿Puedo usar cubic-bezier para curvas de suavizado personalizadas?

Sí. La función de tiempo cubic-bezier(x1, y1, x2, y2) te permite definir cualquier curva de suavizado con dos puntos de control. Cada valor x está entre 0 y 1 (representando tiempo), los valores y pueden ser negativos o mayores que 1 (permitiendo efectos de overshoot y rebote). Usa nuestra herramienta Cubic Bezier o el clásico cubic-bezier.com de Lea Verou para elegir una curva visualmente. Alternativas comunes de preset: ease, ease-in, ease-out, ease-in-out, y la variable CSS con alias lineal cubic-bezier(0.25, 0.1, 0.25, 1) (ease predeterminado).

Herramientas relacionadas

Generador de degradado CSS Generador CSS Cubic Bezier Generador de CSS Loader / Spinner Generador CSS Flexbox