Animaciones con JS

Rate this content
Bookmark

Creando diferentes efectos de animación como rebotes, escritura con javascript puro. Observando varios enfoques para crear animaciones con funciones basadas en el tiempo y Request Animation Frame.

FAQ

Una animación es simplemente una forma de comunicar movimiento. Consiste en mostrar imágenes de manera suficientemente rápida para que el cerebro perciba un movimiento continuo en lugar de fotogramas individuales.

Para lograr animaciones suaves en la web, se apunta a una tasa de 60 fotogramas por segundo. Sin embargo, esta tasa puede variar dependiendo del dispositivo utilizado.

Las transiciones CSS definen un punto de inicio y un punto final, activadas por una acción como un hover o un click y no pueden ejecutarse en bucle. Las animaciones CSS, en cambio, permiten definir puntos intermedios usando keyframes y pueden ejecutarse en bucle.

JavaScript permite un control más detallado sobre las animaciones, como controlar la interpolación y simular escenarios del mundo real, lo cual no es siempre posible con CSS debido a sus limitaciones en la definición dinámica de propiedades de animación.

El requestAnimationFrame es una función que optimiza las animaciones para que corran de manera fluida y sincronizada con la frecuencia de actualización del dispositivo. Reduce el consumo de CPU y batería al no ejecutar animaciones cuando la pestaña está inactiva y ajusta la tasa de fotogramas según el dispositivo.

Para lograr consistencia en diferentes dispositivos, se puede ajustar la posición de la animación basada en el tiempo transcurrido en lugar de incrementos fijos. Esto permite que la animación se ejecute de manera uniforme independientemente de la tasa de fotogramas del dispositivo.

La API de Animaciones Web es una herramienta que permite definir animaciones de manera similar a CSS pero con la capacidad de ajustar dinámicamente propiedades como duraciones y distancias. Su ventaja principal es que no se ejecuta en el hilo principal, lo que permite animaciones más eficientes.

Las animaciones CSS son preferibles cuando la animación es simple y no se requiere un control detallado. Son más eficientes y menos demandantes en términos de rendimiento comparadas con JavaScript.

Aashima Ahuja
Aashima Ahuja
19 min
16 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy trata sobre animaciones en Javascript, abarcando las tasas de fotogramas y diferentes métodos como transiciones y animaciones CSS. JavaScript proporciona un mayor control sobre las animaciones, permitiendo la interpolación y simulación de escenarios del mundo real. Se discuten diferentes enfoques para animar una caja de cero a 100 píxeles, incluyendo bucles for, temporizadores y la API de animaciones web. Se destaca Request Animation Frame como una solución para animaciones consistentes y suaves. La API de Animaciones Web se presenta como una herramienta poderosa junto con las animaciones y transiciones CSS, aunque tiene un soporte limitado en los navegadores.

Available in English: Animations with JS

1. Introducción a las animaciones en Javascript

Short description:

La charla de hoy trata sobre las animaciones en Javascript. Discutiremos las tasas de fotogramas y cómo afectan la suavidad de la animación. Se pueden utilizar diferentes métodos como las transiciones y animaciones CSS para lograr animaciones web.

¿Cómo les va hasta ahora? ¿Están disfrutando de la charla? Genial. ¿Hay desarrolladores de backend aquí? ¿Haciendo ruido? ¿Alguno diseñador de movimiento? Ok, nadie.

Hoy mi tema es animations. Animations en palabras simples es simplemente una forma de comunicar movimiento. Si bien este concepto se introdujo primero en las películas antes de ser llevado al web, pero las personas han estado tratando de encontrar formas de comunicar movimiento desde hace mucho tiempo. ¿Cuántos de ustedes recuerdan este libro de dibujos animados, donde dibujábamos un montón de dibujos y los pasábamos rápidamente para crear una percepción de movimiento?

La idea es que cuando las imágenes se muestran lo suficientemente rápido, nuestro cerebro pierde la capacidad de ver los fotogramas individuales y los mezcla en una sola imagen en movimiento. Pero en el mundo digital, tenemos fotogramas. Cada fotograma tiene un dibujo y la idea es similar al libro de dibujos animados, simplemente se colocan esos fotogramas juntos muy rápido para crear la percepción de movimiento.

Hola, mi nombre es Ashima. Soy una amiga e ingeniera en Miro, y hoy voy a hablar especialmente sobre animations en Javascript. Todos ustedes deben haber escuchado este término, tasas de fotogramas, fotogramas por segundo. Lo escuché por primera vez en las películas. La tasa de fotogramas es el número de fotogramas mostrados en un segundo. Entonces, si mostramos 60 fotogramas en un segundo, se convierte en 60 fotogramas por segundo, y cuanto más fotogramas mostremos en un segundo, más suave será la animación. Para renderizar animaciones suaves en la web, apuntamos a 60 fotogramas por segundo. Pero eso depende mucho del dispositivo que estés usando. Por ejemplo, si estás usando un teléfono móvil, es muy probable que funcione a una frecuencia inferior a 60 hercios. Entonces, la tasa de fotogramas sería de 30 fotogramas por segundo o la que admita el dispositivo.

En la web, podemos lograr animations usando JavaScript, usando CSS, usando transiciones y animaciones CSS. En las transiciones CSS, generalmente defines dos puntos. Uno es el punto de inicio y el otro es el punto final. Lo que sucede en el medio es controlado por el navegador. Esto es lo que llamamos interpolación. En las transiciones CSS, generalmente necesitas una acción para activarlas. Por ejemplo, puedes usar un hover o un click. Y no puedes ejecutarlas en bucle. Entonces tenemos las CSS animations. Y en las CSS animations, también puedes definir puntos intermedios utilizando keyframes, además de definir el punto de inicio y el punto final. Y sí, la interpolación, nuevamente, es controlada por el navegador.

2. Controlling Animations in JavaScript

Short description:

A veces CSS no es suficiente para lograr las animaciones deseadas en JavaScript. JavaScript proporciona un mayor control sobre las animaciones, permitiendo la interpolación y simulación de escenarios del mundo real. Existen diferentes enfoques para animar una caja de cero a 100 píxeles, incluyendo el uso de un bucle for, temporizadores como setInterval y setTimeout, el requestAnimationFrame y la moderna API de animaciones web. Al utilizar un bucle for, el navegador renderiza la caja directamente en 100 píxeles en lugar de actualizar incrementalmente su posición debido a cómo funciona el bucle de eventos. Los temporizadores como setInterval y setTimeout se pueden utilizar para resolver este problema ejecutando una devolución de llamada después de un retraso especificado.

Así es como se movería entre diferentes estados. Pero a veces no es posible hacer todo con CSS. Sé que el navegador hace mucho por nosotros cuando se trata de animaciones. Pero cuando necesitamos más control sobre las animaciones, necesitamos usar JavaScript. Y así, JavaScript te permite controlar la interpolación y simular escenarios del mundo real.

Por ejemplo, la caída libre de un objeto o la caída de nieve. Supongamos que se te presenta este problema, que quieres animar una caja de cero a 100 píxeles. ¿Cuántos de ustedes han encontrado esto en sus entrevistas? Yo sí. Y fracasé. Pero hoy veremos que hay un par de enfoques para resolver esto, básicamente. Puedes usar un bucle for si eres nuevo en JavaScript. También puedes usar temporizadores, setInterval, setTimeout. También puedes usar el requestAnimationFrame y luego la moderna API de animaciones web.

Si estás usando un bucle for, puedes ejecutarlo desde cero hasta 100 píxeles y decirle a tu navegador: `ok, navegador, muéstrame esto en una posición específica`. Pero esto no funciona. Lo que sucede en este caso es que la caja se renderiza directamente en 100 píxeles. Pero eso no es lo que quieres. Quieres actualizar la posición incrementalmente. La expectativa es que el navegador haga algo como esto, mostrarlo en 0, 1, 2 y luego en 100. Pero la realidad es que la línea se ejecuta como translateX 100 píxeles. Maldito navegador. Esto se debe a cómo funciona el bucle de eventos. Me gusta mucho este diagrama de Jake. Si no has visto la charla sobre el bucle de eventos, realmente debes verla. Lo que sucede aquí es que el bucle for se ejecuta como una tarea. Y después de que se ejecuta todo el bucle for, el navegador calcula los estilos, renderiza el diseño y luego realiza la pintura. Y por eso vemos que solo se ejecuta translateX 100 píxeles.

Otra forma de resolver este problema es utilizando temporizadores. Puedes usar setInterval y setTimeout. Ambas funciones toman una devolución de llamada y un tiempo de retraso después del cual se ejecutará la devolución de llamada.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
React Summit US 2023React Summit US 2023
28 min
El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
Top Content
Cuando se trata de construir interfaces caprichosas, React es un aliado sorprendentemente capaz. En esta charla, te mostraré cómo uso React para orquestar interacciones complejas al profundizar en algunos ejemplos de mi blog.
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
React Day Berlin 2022React Day Berlin 2022
28 min
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
Sigue Desplazándote
JSNation Live 2021JSNation Live 2021
33 min
Sigue Desplazándote
¡Espera! ¡No tan rápido - Deja de desplazarte y quédate un rato conmigo! Cuando se hace correctamente, las animaciones basadas en el desplazamiento pueden agregar pulido a un sitio y hacer que la narración en línea se sienta más inmersiva. ScrollTrigger de GreenSock te permite lograr animaciones suaves basadas en el desplazamiento con un código mínimo. Vamos a explorar juntos algunas de sus características.
Las animaciones en React Native deben ser divertidas
React Advanced Conference 2022React Advanced Conference 2022
28 min
Las animaciones en React Native deben ser divertidas
¿Tienes miedo de las animaciones? Bueno, no deberías, React Native Reanimated te tiene cubierto. Tu aplicación móvil puede contar una historia a través de las animaciones, puede ayudar a los usuarios mediante microinteracciones y diferenciar tu aplicación de las demás.
Animación y Vue.js
Vue.js London Live 2021Vue.js London Live 2021
32 min
Animación y Vue.js
Hay mucho que ganar al agregar animaciones a tu sitio o aplicación. Más allá de su atractivo visual, puedes guiar la atención del usuario, cubrir componentes y elementos lentos de carga, y revelar secciones de una página sin que el usuario se pregunte de dónde provienen. Esta charla cubrirá las formas incorporadas en Vue.js que te ayudan a animar tu sitio, y cómo, para animaciones más complicadas, puedes utilizar bibliotecas de terceros. También se abordarán los conceptos básicos de la animación en sí: qué animar y qué no animar, y cómo puedes utilizar las animaciones para mejorar tu sitio web sin perjudicar la experiencia de las personas con discapacidades.
Lecciones aprendidas de la construcción de aplicaciones interactivas en React
React Summit Remote Edition 2021React Summit Remote Edition 2021
35 min
Lecciones aprendidas de la construcción de aplicaciones interactivas en React
Cuando los usuarios manipulan directamente objetos en la pantalla en lugar de usar controles separados para manipularlos, están más comprometidos y comprenden más fácilmente los resultados de sus acciones. Las animaciones sutiles pueden brindar a las personas una retroalimentación significativa para ayudar a aclarar el resultado de sus acciones. Pero, el diablo está en los detalles. Lo que a menudo parece simple puede ser complejo de hacer correctamente, especialmente cuando te importa la accesibilidad. Sid comparte las lecciones que ha aprendido construyendo interfaces de usuario interactivas.

Workshops on related topic

Cómo crear arte generativo increíble con código JavaScript simple
JS GameDev Summit 2022JS GameDev Summit 2022
165 min
Cómo crear arte generativo increíble con código JavaScript simple
Top Content
WorkshopFree
Frank Force
Frank Force
En lugar de dibujar manualmente cada imagen como en el arte tradicional, los artistas generativos escriben programas que son capaces de producir una variedad de resultados. En esta masterclass aprenderás cómo crear arte generativo increíble usando solo un navegador web y un editor de texto. Comenzando con conceptos básicos y avanzando hacia la teoría avanzada, cubriremos todo lo que necesitas saber.