Transiciones CSS y keyframes, con 20 ejemplos para copiar

Laboratorio de transiciones CSS

Transiciones CSS y keyframes: 20 ejemplos en vivo | We.Inc

Ajusta la duración, el retardo y el easing con sliders, mira cómo se dibuja la curva cubic-bezier, compara las transiciones con @keyframes y copia 20 microinteracciones hover que respetan el movimiento reducido.

Una transición CSS anima una propiedad de forma suave cuando cambia su valor, por ejemplo al pasar el ratón: transition: transform 200ms ease-out. Necesita un estado inicial y uno final y se ejecuta una vez por cambio. Las animaciones con @keyframes definen sus propios pasos, pueden repetirse en bucle y empiezan sin ningún cambio de estado. Anima transform y opacity para obtener los resultados más fluidos.

transition, parte por parte

El laboratorio anima un elemento real entre dos estados con la propiedad, la duración, el retardo y el easing que elijas, y dibuja el easing como una curva para que veas por qué ease-out se siente ágil y ease-in se siente lento. Más abajo hay veinte efectos de hover y focus que puedes editar en vivo y pegar en cualquier sitio.

Preguntas frecuentes

¿Qué diferencia hay entre una transición y una animación?

Una transición reacciona a un cambio de valor, como que se añada una clase o empiece un hover, y solo va del valor antiguo al nuevo. Una animación usa @keyframes, puede tener muchos pasos, repetirse o alternar, y se ejecuta en cuanto se aplica. Usa transiciones para cambios de estado y keyframes para indicadores de carga y llamadas de atención.

¿Por qué no se ejecuta mi transición?

Causas habituales: la propiedad no es animable (display no lo era hasta allow-discrete), el valor inicial es auto (height: auto no se puede interpolar sin funciones más recientes), el elemento se acaba de insertar y no hay estilo previo, o la transición solo está declarada en el estado hover y por eso vuelve de golpe al quitar el ratón.

¿Qué propiedades son baratas de animar?

transform y opacity suelen poder gestionarse en el compositor sin recalcular el layout ni repintar, así que se mantienen fluidas. Animar width, height, top, left o margin fuerza el layout en cada fotograma, y box-shadow o filter provocan repintados, lo que puede dar tirones en móviles más lentos.

¿Qué significa cubic-bezier?

Describe la curva de easing con dos puntos de control, cubic-bezier(x1, y1, x2, y2). Los valores x son el tiempo y deben quedarse entre 0 y 1; los valores y son el progreso y pueden salirse de ese rango, lo que crea un sobrepaso o un pequeño rebote.

¿Cómo respeto el movimiento reducido?

Usa la media query @media (prefers-reduced-motion: reduce) para acortar o quitar el movimiento. Una forma sencilla es mantener los cambios de color y opacidad pero quitar los transforms, o poner transition-duration y animation-duration a un valor mínimo dentro de esa query.

Cómo leer una curva de easing

¿Transición o @keyframes?

Animar desde y hacia display: none

Transición frente a @keyframes de un vistazo

Cuándo usar cada una

Lo que cuesta animar cada propiedad

Trabajo de renderizado por fotograma (regla general, varía según el navegador)

Una red de seguridad para el movimiento reducido

Mantiene los cambios de estado pero quita el desplazamiento. Ponlo cerca del final de la hoja de estilos.

Fundido de entrada y salida de un popover con @starting-style

Una mejora para los navegadores que admiten allow-discrete y @starting-style. Los demás lo muestran y ocultan al instante.

20 microinteracciones para copiar

Pasa el ratón o pon el foco en cada resultado para verlo en acción. Cada fragmento termina con una regla de movimiento reducido.

Tarjeta que se eleva

Sube una tarjeta y hace más profunda su sombra.

Botón que crece

Un pequeño escalado en hover y un efecto de pulsado al hacer clic.

Subrayado que se desliza

La línea crece desde la izquierda usando el tamaño del fondo.

Relleno de color

Los colores de fondo y de texto se intercambian a la vez.

Empujón de la flecha

El icono se mueve mientras la etiqueta se queda quieta.

Icono que gira

Un signo más se convierte en una cruz.

Fundido del anillo de foco

El desplazamiento del contorno se anima para quien usa el teclado.

Zoom de imagen dentro del marco

La imagen se escala pero el marco la recorta.

Pie de foto que aparece

El pie de foto sube desde el borde inferior.

Brillo suave

Aparece con un fundido una sombra de color.

Inclinación sutil

Unos pocos grados de rotación hacen que una pegatina parezca suelta.

Borde que se dibuja

El color del borde pasa de gris al azul de la marca.

Atenuar los demás

Al pasar el ratón por un elemento, sus hermanos se atenúan.

Barrido de brillo

Una franja de luz cruza el elemento en hover.

Interruptor deslizante

Una casilla con estilo de interruptor y un botón que se desliza.

Chevron de acordeón

El marcador gira cuando se abre un elemento details.

Punto que late (keyframes)

Un punto de estado en bucle hecho con @keyframes.

Spinner (keyframes)

El timing linear mantiene la rotación uniforme.

Aparecer subiendo al cargar (keyframes)

fill-mode both lo mantiene oculto durante el retardo.

Sacudida de error (keyframes)

Una breve sacudida horizontal que aquí se reproduce una vez en hover.

Curva de easing cubic-bezier({values})

Laboratorio de transiciones

Reproducir hacia delante

Reproducir hacia atrás

Tu dispositivo pide movimiento reducido, así que la vista previa salta en lugar de moverse.

Propiedad a animar

Duración: {n}ms

Retardo: {n}ms

Easings predefinidos

Copiar CSS

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio