Библиотеки анимации JavaScript: 10 популярных вариантов

Опубликовано: 2022-04-21
Резюме » Если мы посмотрим на то, что может сделать CSS, станет ясно, что анимация JavaScript — это больше, чем просто счетчики, загрузчики или эффекты изменения текста. Текущие тенденции в анимационном дизайне включают переходы макета, страницы с интерактивным контентом и обработку данных в реальном времени. И в этой статье мы рассмотрим лучшие библиотеки анимации JavaScript с добавлением живого примера для каждой библиотеки.

Оглавление
  • Типы анимационных библиотек JavaScript
  • #1 – Три.js
  • #2 – Аниме.js
  • #3 – Поп-движение
  • № 4 – мо.js
  • № 5 — p5.js
  • #6 – Движение
  • № 7 – ГСАП
  • #8 – Paper.js
  • #9 – Веб-анимация
  • #10 – Протон
  • Резюме

Я люблю экспериментировать с различными анимационными эффектами, особенно с теми, которые просты и могут быть реализованы с помощью CSS. Но, если мы посмотрим на картину шире, CSS-анимация далеко не уйдет. И если вы хотите создавать сложные и интерактивные пользовательские интерфейсы — рано или поздно вам придется переключиться на JavaScript.

Основное преимущество использования JavaScript для анимационных эффектов заключается в том, что вы можете контролировать гораздо больше логики анимации. Это включает в себя плавность переходов, управление состоянием и откликом DOM, а также использование 2D- и 3D-графики благодаря WebGL.

Типы анимационных библиотек JavaScript

Итак, поскольку библиотеки анимации JS бывают разных видов и форм, это действительно помогает сузить конкретную область внимания. Многие движки и фреймворки используются не только для внешнего интерфейса, но и для создания игр и создания другого интерактивного контента.

В этом конкретном обзоре я сосредоточусь на библиотеках, которые чаще всего используются во фронтенд-разработке, либо сами по себе, либо вместе с любым из текущих фреймворков.

В свое время я рассмотрю возможность добавления в этот список дополнительных библиотек, которые меньше по размеру, но все же предоставляют значимые способы добавления интерактивных анимаций в ваши проекты.

Каждая библиотека имеет ссылки на свой веб-сайт и страницу GitHub. Я также добавил пример CodePen, который вы можете запустить с этой страницы, и дополнительные ресурсы, которые представляют собой либо учебные пособия, либо видеоруководства.


#1 – Три.js

Библиотека анимации ThreeJS
Документы веб-сайта GitHub

Three.js — это библиотека для создания 3D-анимационных эффектов, которые вы используете при творческой разработке веб-сайтов. Three.js избавляет разработчиков от необходимости изучать WebGL и вместо этого может сосредоточиться на создании интерактивных 3D-эффектов без каких-либо сложностей.

На высоком уровне Three.js используется для создания интерактивных виртуальных приложений, таких как Mozilla Hubs. Кроме того, библиотека также часто используется для создания иммерсивных целевых страниц. Издатели и редакции мирового класса годами использовали Three.js для создания страниц на основе данных с динамическими обновлениями.

Если вы посетите домашнюю страницу, вы увидите огромное количество выделенных проектов, которые должны дать вам много вдохновения/ясности в отношении того, как эта библиотека используется в повседневных условиях.

Пример анимации Three.js

См. Фон волн линии сетки пера — THREE.js от CP Designer (@cpandya) на CodePen.

Дополнительные ресурсы Three.js

  • Как мы создали глобус GitHub
  • Эффект искажения пикселей с помощью Three.js

#2 – Аниме.js

Аниме.js
Документы веб-сайта GitHub

Anime.js от Джулиана Гарнье, вероятно, вторая по известности библиотека для интеграции анимации в веб-проекты. Его популярность связана со встроенными инструментами, помогающими ускорить процесс анимации элементов CSS, SVG и DOM.

Например, вы можете выбрать определенные селекторы CSS, а затем применить усовершенствованную логику анимации с помощью JavaScript, а не писать @keyframes самостоятельно.

 anime({ targets: '.staggering-axis-grid-demo .el', translateX: anime.stagger(10, {grid: [14, 5], from: 'center', axis: 'x'}), translateY: anime.stagger(10, {grid: [14, 5], from: 'center', axis: 'y'}), rotateZ: anime.stagger([0, 90], {grid: [14, 5], from: 'center', axis: 'x'}), delay: anime.stagger(200, {grid: [14, 5], from: 'center'}), easing: 'easeInOutQuad' });

Только с помощью приведенного выше фрагмента вы можете создать эффект, который выглядит следующим образом:

Пример анимации anime.js

Если бы вы делали это с помощью CSS, вам нужно было бы выделить каждый отдельный блок сетки и написать для него отдельную логику. Это не только непрактично, но и требует много работы. На странице документации Anime.js вы найдете множество подобных примеров. И приведенная ниже демонстрация делает еще один шаг, чтобы продемонстрировать, как эту библиотеку можно использовать в современной фронтенд-разработке.

Пример анимации Anime.js

См. анимацию логотипа Pen anime.js, созданную Джулианом Гарнье (@juliangarnier) на CodePen.

Anime.js Дополнительные ресурсы

  • Учебник Anime.js — движок анимации JavaScript за 10 минут
  • Анимация пользовательского интерфейса с помощью Anime.js

#3 – Поп-движение

Popmotion — простые библиотеки анимации для восхитительных пользовательских интерфейсов.
Документы веб-сайта GitHub

Popmotion — это низкоуровневая библиотека анимации, написанная на TypeScript. Это также библиотека, которая поддерживает популярную библиотеку Framer Motion (она указана в этой статье), используемую в проектах React. Будучи непредвзятым, вы можете использовать Popmotion для интеграции пользовательских эффектов, написав дополнительные функции, которые вы хотите использовать.

Как следует из названия, Popmotion особенно хорош для анимации элементов пользовательского интерфейса с помощью различных анимаций на основе движения. Сюда входят такие эффекты, как смягчение, пружины, ключевые кадры и более сложные эффекты перехода. Пример ниже хорошо демонстрирует практическое применение анимационных эффектов для составных элементов.

Пример анимации Popmotion

См. демонстрацию Pen Popmotion от Arden (@aderaaij) на CodePen.

Дополнительные ресурсы Popmotion

  • Визуализируйте алгоритм блинов с помощью React и Popmotion.io
  • Добавьте весеннюю анимацию в ваше угловое приложение с помощью popmotion

№ 4 – мо.js

mo.js Набор инструментов для веб-дизайна анимированной графики
Документы веб-сайта GitHub

Mo.js ориентирован на моушн-графику и предлагает простую структуру кода, которую можно реализовать в автономных проектах, а также в сочетании с такими фреймворками, как React.

А поскольку Mo.js поставляется с собственным декларативным API, вы можете контролировать каждый шаг анимации. Это включает в себя определение не только логики того, чего вы хотите достичь, но и того, как вы собираетесь этого достичь. Библиотека включает в себя готовые компоненты и примеры, адаптированные для визуально насыщенного взаимодействия с пользователем.

Вот пример фрагмента:

 const travelCircleExpand = new mojs.Shape({ fill: COLORS.BLACK, radius: 126, scale: { .1: 1 }, opacity: { 0 : 1 }, easing: 'cubic.out', duration: 400, isForce3d: true, isTimelineLess: true, });

Как видите, большая часть логики предопределена. Таким образом, вместо того, чтобы придумывать свои собственные идеи, вы можете принять к сведению предоставленные свойства и построить свой путь. Учебный раздел в документах содержит довольно много примеров практического применения, особенно эффектов, которые добавляют крошечные, но значимые анимации к повседневным элементам веб-страницы.

mo.js Пример анимации

См. Эффекты Pen Link Hover с mo.js Майка Куинна (@mprquinn) на CodePen.

mo.js Дополнительные ресурсы

  • Как использовать MoJS с React
  • Знакомство с MoJS

№ 5 — p5.js

p5.js
Документы веб-сайта GitHub

p5.js — это JavaScript-реализация Processing — отдельного «языка», предназначенного для использования визуальными художниками. В отличие от некоторых примеров, которые мы видели до сих пор, p5.js — это универсальная библиотека анимации, предоставляющая решения не только для практических приложений, но и для более надежных и сложных проектов. Это включает в себя полную поддержку 2D и 2D-эффектов.

Что касается использования p5.js в проектах веб-сайтов, библиотека открывает возможности для всестороннего творчества. Например, вы можете быстро загружать такие эффекты, как дымовая завеса, анимированные деревья и целевые страницы на основе данных, с которыми могут взаимодействовать пользователи.

Вам действительно придется делать все рисунки самостоятельно, но с количеством ресурсов, доступных для p5.js, я думаю, вы обнаружите, что начать работу не так уж и сложно. И само собой разумеется, что сообщество, стоящее за обоими этими проектами, очень вовлечено.

Пример анимации p5.js

См. Pen P5.JS Twist and Turn. от Sdsmnc (@supastrocat) на CodePen.

p5.js Дополнительные ресурсы

  • Обработка и p5.js
  • Закаты и падающие звезды в p5.js

#6 – Движение

Документы веб-сайта GitHub

React настолько популярен, что имеет смысл иметь собственную библиотеку анимации. Framer Motion поставляется с предварительно созданным API, который позволяет разработчикам React упростить процесс создания анимированных компонентов, а также устраняет некоторые препятствия, связанные с необходимостью изучения CSS и его независимых свойств анимации. И с ним довольно легко работать.

Пример фрагмента:

 import { motion } from "framer-motion" export const MyComponent = () => ( <motion.div animate={{ rotate: 360 }} transition={{ duration: 2 }} /> )

Анимации во Framer определяются свойствами motion и animate . Это позволяет вам выбирать целые компоненты и их внутренние элементы, которые затем можно обогатить собственной логикой анимации. Удивительная статья Нефе Эмадамерхо -Атори в разделе ресурсов — отличная отправная точка для того, чтобы увидеть, как работает Framer Motion.

Пример анимации движения

См. кнопку Pen Laser Sight Button от codebro (@codebro) на CodePen.

Дополнительные ресурсы по движению

  • Представляем Framer Motion
  • Адаптивная анимация с Framer Motion

№ 7 – ГСАП

GSAP (анимационная платформа GreenSock)
Документы веб-сайта GitHub

В последнее время я довольно часто видел, как в Твиттере публикуются изображения GSAP. Но это не стало неожиданностью. Многие анимации и динамические эффекты, которые мы видим в творческих проектах, стали возможными благодаря надежному движку GSAP.

Библиотека не только оптимизирована для повышения производительности, но и полностью совместима с вашими любимыми технологиями. Сюда входят такие фреймворки, как React и Vue, а также такие библиотеки, как jQuery, с дополнительной поддержкой мобильных и устаревших веб-браузеров.

Поскольку GSAP может запрашивать и анимировать практически любой веб-элемент (от CSS до Canvas и объектов DOM) — вы можете использовать его для чего-то столь же простого, как эффект счетчика, или сделать все возможное и создать действительно динамичный веб-сайт.

Раздел Showcase содержит сотни примеров проектов, над которыми работали разработчики. Проверьте это как для вдохновения, так и для того, чтобы увидеть, что возможно с этой библиотекой.

Анимация примера GSAP

См. интро Pen Hulu Originals от Hyperplexed (@Hyperplexed) на CodePen.

Дополнительные ресурсы GSAP

  • Удивительные методы анимации с GSAP
  • Создание сложных последовательностей анимации веб-сайта — учебное пособие по GSAP 3

#8 – Paper.js

Документы веб-сайта GitHub

Paper.js — это библиотека анимации со строгим акцентом на анимацию векторной графики. Такой подход позволяет создавать не только статические эффекты, но и интерактивные динамические эффекты. В частности, Paper.js популярен среди анимационных проектов, где пользователь может перетаскивать объекты, изменять их порядок и вводить собственные данные.

Объекты можно классифицировать по слоям, причем каждый слой имеет собственную спецификацию анимации. Это удобно, когда вы работаете со сложными структурами, позволяя вам удалять/отключать определенные слои, если это не требуется пользователем.

Пример анимации Paper.js

См. Стаканы для наполнения ручек — Paper.js от Фиоральда Исмаили (@Fiorald) на CodePen.

Paper.js Дополнительные ресурсы

  • Paper.js векторное стирание
  • Волны в Paper.js

#9 – Веб-анимация

Веб-анимация — JS-библиотека для API
Документы веб-сайта GitHub

Эта библиотека является прямым портом JavaScript API веб-анимации. Библиотека напрямую интегрируется со спецификацией Element.animate() , позволяя вам использовать функции анимации, обычно написанные с использованием логики CSS. Авторы объяснили это тем, что:

«JavaScript-реализация API веб-анимации, которая обеспечивает функции веб-анимации в браузерах, которые не поддерживают ее изначально. Полифил возвращается к нативной реализации, когда она доступна».

Веб-анимация Пример анимации

См. Pen Imperative Animations Сэма Торогуда (@samthor) на CodePen.

Дополнительные ресурсы по веб-анимации

  • API веб-анимации — веб-API | МДН
  • Веб-анимация Уровень 2 | W3C

#10 – Протон

Proton — это легкая и мощная библиотека анимации частиц Javascript.
Документы веб-сайта GitHub

Эффекты частиц определенно находятся в трендах современного веб-дизайна. Дизайнеры используют их не только для фоновых эффектов, но и для интересных переходов и даже презентаций для творческих проектов. Библиотека Proton разработана специально для быстрого масштабирования творческих эффектов частиц.

Вы можете создавать такие вещи, как создание искровых эффектов и взаимодействие на основе столкновений, а также преобразовывать текст в новые захватывающие анимационные эффекты.

Пример анимации протона

См. Pen my-emitter от matsu7089 (@matsu7089) на CodePen.

Протон Дополнительные ресурсы

  • Примеры протонных двигателей
  • Компонент React для фона частиц

Резюме

Хорошая вещь во многих из этих библиотек заключается в том, что они существуют уже некоторое время. Таким образом, относительно легко найти примеры, а также подробные руководства о том, как использовать конкретную библиотеку в конкретном контексте.

Прежде всего, полезно знать, какую цель вы пытаетесь достичь, особенно если вы собираетесь работать над анимацией, реализующей данные в реальном времени или пользовательский ввод.

Другими словами, лучшего не бывает. Каждая библиотека имеет свои сильные и слабые стороны. Что касается меня, я бы, вероятно, выбрал GSAP, потому что он хорошо оптимизирован для использования практически в любом мыслимом внешнем проекте.

Но если я делаю менее амбициозный проект, такой библиотеки, как Popmotion, вполне достаточно.