Интересное в исполнении приложение всегда сможет привлечь внимание, поскольку мы любим, когда красиво. Но что стоит за этим "красиво"? И начинка, и внешний вид. Сегодня я бы хотела поговорить о внешнем виде, ведь встречают по одежке. А конкретно - про анимации.
Анимации добавляют жизни приложениям и сайтам и делают их простыми в использовании. Мы можем добавлять изменение кнопок при нажатии, всплывающие объекты, эффекты перехода и многое другое, что позволяет пользователю не просто ознакомиться с содержимым, а еще и интересно провести время.
Мы поговорим о библиотеках JavaScript, упрощающих добавление этих анимаций для разработчиков, делая приложения более приятными.
Three.js
Three.js – это высокоуровневая JavaScript-библиотека, специализирующаяся на создании 3D-графики и анимаций для веб-приложений. Используя Three.js, мы можем легко конструировать различные трехмерные сцены, от игр и впечатляющих визуализаций до сред виртуальной реальности. Библиотека облегчает процесс добавления объектов, наложения материалов и текстур, создания анимаций, а также интеграции 3D-моделей, созданных в Blender или других инструментах 3D-моделирования. За счет построения на базе WebGL, Three.js предоставляет интуитивно понятный API, позволяя разработчикам сконцентрироваться на дизайне трехмерных сцен без необходимости погружения в технические детали WebGL.
Пример анимации:
Mo.js
Mo.js представляет собой превосходный фреймворк, выделяющийся своей простотой использования и выразительным синтаксисом. Этот фреймворк значительно облегчает нашу работу в области создания анимаций, позволяя нам легко реализовывать всё, от базовых вращений до сложных, многоуровневых анимаций. В то время как некоторые другие библиотеки сфокусированы на функциональности, Mo.js уделяет равное внимание как художественной, так и технической сторонам анимационного процесса. Фреймворк стимулирует к творческому подходу, предоставляя разработчикам инструменты для детальной настройки каждого элемента анимации, включая задержки, продолжительность, эффекты плавности и множество других параметров. Благодаря модульной структуре, Mo.js дает возможность создавать сложные анимационные последовательности для пользовательских интерфейсов, при этом поддерживая полный контроль над тонкостями движения и взаимодействия.
Пример:
AniJS
AniJS представляет собой элегантную JavaScript-библиотеку, предназначенную для упрощения взаимодействия с элементами пользовательского интерфейса без необходимости глубоких знаний в программировании. Эта библиотека разработана с учетом потребностей дизайнеров, и поэтому её синтаксис использует ясный и понятный английский язык, делая её доступной для понимания широкому кругу пользователей.
Пример:
GreenSock Animation Platform (GSAP)
GSAP (GreenSock Animation Platform) представляет собой мощную библиотеку для создания анимаций, которая открывает широкие возможности для реализации динамичных визуальных эффектов в веб-приложениях, игровых проектах и интерактивных историях. GSAP отличается выдающейся кросс-браузерной совместимостью и высокой скоростью рендеринга, что делает его предпочтительным инструментом для создания профессиональных анимаций. Платформа поддерживает обширный диапазон анимационных эффектов, включая анимации свойств CSS, SVG, элементов на HTML5 Canvas и проектов на WebGL. GSAP известен своей плавной анимацией без мерцаний, обеспечивая стабильность во всех популярных браузерах. С такими продвинутыми функциями, как контроль временной шкалы, механизмы обратного вызова и усовершенствованные опции плавности переходов, GSAP дает возможность тщательно разрабатывать сложные анимационные последовательности.
Пример:
Typed.js
Typed.js является JavaScript-библиотекой, позволяющей имитировать машинописный текст, с возможностью регулировки скорости печати, автоматического удаления уже напечатанного текста и последующего ввода нового текста согласно заданным параметрам.
Пример:
Lottie
Lottie представляет собой библиотеку, совместимую с платформами Android, iOS, Web и Windows, которая декодирует анимации, созданные в Adobe After Effects и экспортированные в JSON-формате с использованием Bodymovin. Эта библиотека позволяет без труда воспроизводить анимации на мобильных устройствах и веб-сайтах.
Благодаря Lottie, дизайнеры получили возможность разрабатывать и передавать сложные анимации без необходимости их ручной переработки разработчиками.
Пример:
Anime.js
Anime.js представляет собой фреймворк, который выигрывает популярность благодаря своей простоте и мощным функциональным возможностям. Он является одновременно интуитивно понятным для новичков и достаточно гибким для опытных аниматоров, позволяя легко воплощать творческие концепции в реальность. Anime.js умело управляет как CSS-анимациями, так и анимациями, основанными на JavaScript, делая его отличным решением для разнообразных анимационных проектов. Его API является простым для освоения, но при этом обладает достаточной мощностью для реализации сложных анимационных эффектов, от простых переходов до продвинутых ключевых кадров и анимаций с использованием временной шкалы, предоставляя обширный спектр возможностей для разработчиков.
Пример:
Popmotion
Popmotion представляет собой библиотеку для создания анимаций в JavaScript, ориентированную на простоту и удобство использования. Она отличается лаконичным и интуитивно понятным API, что облегчает её применение, и обеспечивает совместимость со всеми основными веб-браузерами. Благодаря встроенной системе плагинов, Popmotion предоставляет возможность дополнения стандартного функционала новыми возможностями.
Созданная с использованием TypeScript, эта библиотека способна сотрудничать с любыми API, которые могут принимать числовые значения, как, например, React. Кроме того, Popmotion используется в качестве основы для анимаций в популярной библиотеке Framer Motion, о которой поговорим далее)
Пример:
Framer Motion
Framer Motion является специализированной библиотекой анимации для веб, разработанной с учетом интеграции в экосистему React. Эта библиотека обеспечивает полный набор инструментов для внедрения анимационных движений в приложения React. Благодаря тому, что Framer Motion сосредоточен на React, её синтаксис оптимизирован под данную платформу, что делает её особенно удобной для опытных разработчиков. Библиотека предлагает набор анимационных возможностей для:
Макетов: манипулируя структурой веб-страницы и расположением элементов.
Жестов: используя слушатели событий для управления движением элементов в ответ на действия пользователя, такие как наведение курсора, клики или перетаскивание.
Прокрутки: управляя анимацией, связанной с действиями прокрутки пользователя.
Переходов: определяя способы анимации изменений между состояниями.
Реализация подобных анимационных последовательностей с нуля может быть затратной по времени, поэтому использование предварительно настроенных анимаций из Framer Motion предоставляет значительную экономию времени для разработчиков.
Пример:
ScrollMagic
ScrollMagic - это библиотека JavaScript, специализированная на создании интерактивных сценариев прокрутки, которая отличается лёгкостью настройки и возможностью расширения функционала. Возможности ScrollMagic могут быть расширены за счёт интеграции с различными анимационными фреймворками.
В качестве предпочтительного варианта часто выбирается Greensock Animation Platform (GSAP) благодаря её надёжности и обширным анимационным возможностям. Для более простых сценариев доступна поддержка фреймворка VelocityJS. Также, ScrollMagic предоставляет гибкость для реализации пользовательских расширений или для создания анимаций без использования фреймворков, применяя CSS анимации и переключение классов.
Пример:
Подводя итоги, стоит сказать, что JavaScript-анимации представляют собой вид творчества, в котором техническая экспертиза гармонично сочетается с художественным видением. Они способны радикально преобразовать восприятие пользователем веб-пространства, придавая интерфейсам дополнительную привлекательность и улучшая их взаимодействие с пользователем.
Мы можем создавать интересные анимации с GSAP для своего приложения или разместить 3D-модель айфона на своем сайте с помощью Three.js.
Надеюсь, вам была полезна эта подборка и вы либо открыли для себя что-то новое, либо просто были рады видеть уже знакомые библиотеки.
Спасибо за внимание! Если будете что-то пробовать или уже был опыт - обязательно поделитесь этим в комментариях!
Комментарии (6)
Maxim_Q
06.04.2024 16:41+1А можно опрос добавить: "Вам нравятся такие анимации на сайте или нет"?
fivlabor
06.04.2024 16:41+3Это ведь не только раздражающие сайты делать
На tree.js делал интерпретацию научных данных - графики трехмерные. Такое сделал сто лет назад на Delphi 7 (там был компонент хороший для этого дела. А дистр конечно с рутрекер), но года три назад просили пару фичей добавить и выбор уже в пользу web-фреймворка.
0x131315
06.04.2024 16:41+1Личное мнение: скорее раздражает, чем нет.
На смартфонах анимации штука приятная, если сделано грамотно, т.е. не тормозит, и не замедляет слишком сильно переходы по интерфейсу. На практике таких примеров на весь рынок 1,5 штуки - почти у всех реализации отвратительные, и люди просто выключают анимации или выкручивают их скорость так, чтобы они мгновенно проскакивали.
На десктопах полностью аналогично: есть примеры, где это можно сделать красиво и приятно, например на kde с современным железом. Но в большинстве случаев, особенно из коробки, анимации реализованы ужасно, и их выключают.
С браузерами таже история: почти все рализации анимаций на сайтах ужасны и неудобны, доставляют только дискомфорт. Только анимации на браузерах не только замедляют интерфейс, но и натурально заставляют железо взлетать на вентиляторах охлаждения, или высаживают батарейку на глазах. Особенно мерзко выглядят сайты больших брендов с огромными бюджетами, где вся главная страница одна сплошная анимация, и тяжела не только вычислительно, но и натурально странички весит под сотню мегабайт, что даже просто прогрузить проблематично. Вот если делать простенькую анимацию, которая бы не сильно грузила железо, не слишком бросалась в глаза, и не тормозила интерфейс и переходы по нему - вот такой анимации цены бы не было. Но с браузерами в этом плане большие сложности: мало того что они сами по себе тормозят, так еще и у посетителей слишком большой зоопарк железа, от стареньких смартфонов на первых версиях андроида до современных флагманов, и этот факт большинство сайтов упорно не учитывает. Дополнительно посетителей злит тот факт, что они никак не могут влиять на анимации в браузерах, нет интерфейса чтобы их ускорить или хотя бы отключить, как в случае с анимациями ОС. Так что реализация анимаций на сайтах штука по сути неблагодарная: грамотно сделать сложно, дорого, требуется поддержка огромного зоопарка устройств, и всегда будут недовольные.
ILaeeeee
Юзаю связку ScrollMagic + anime.js. Т.к. гибко и бесплатно. Для 95% проектов подходит.
До этого scrollreveal юзал и greensock.
Эпизодически юзаю tree.js и d3.js. Глобусы на них делал со специфическими штуками.
Lottie проигрыватель тоже очень выручает со сложной анимацией. Когда её профаниматор делает. Но вот длинная и многообъектная анимация сильно комп нагружает. Поэтому в таких случаях видос с контролем таймлайна помогает. Т.е. в видео сложная анимация, а параллельно с ней простая синхронно идёт, если нужен интерактив.