{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Чем нам так нравятся Lottie-анимации, и почему вам тоже стоит о них узнать

Всем привет, меня зовут Артем Сафаров, я — дизайнер из веб-студии Pyrobyte. Мы используем Lottie-анимации на проектах студии, эта технология нам очень нравится, поэтому сегодня и вас с ней познакомим :)

Lottie — это библиотека для веб-разработки, iOS, Android и React Native, которая отображает анимацию After Effects в режиме реального времени, позволяя сайтам и приложениям использовать анимацию так же легко, как и статическое изображение. Создателями этой библиотеки являются инженеры из компании Airbnb.

В прошлом создание сложных анимаций для приложений на Android, iOS и React Native было трудным и длительным процессом. Приходилось либо добавлять объемные файлы изображений для каждого размера экрана, либо писать тысячу строк хрупкого и сложного в поддержке кода. Из-за этого в большинстве сайтов и приложений не использовалась анимация, несмотря на то, что это — мощный инструмент для улучшения пользовательского опыта.

Эта библиотека использует анимации, экспортированные в виде файлов JSON из After Effects путем кодирования в данный формат плагином Bodymovin. Расширение подключается на сайт с проигрывателем JavaScript, который позволяет отображать анимацию в вебе.

Как обычно реализовываются анимации в приложениях и сайтах

  • GIF. Распространенный формат, но имеет довольно много ограничений, связанных с потерей качества и большим весом.
  • AVI, mp4. Большой вес финальных файлов, нет возможности экспортировать видео с прозрачным фоном.
  • Анимированные вручную разработчиком html-элементы. Трудоемкий процесс в разработке, который влечет за собой большое количество правок от дизайнера. К тому же разработчик ограничен в реализации анимации из-за трудностей с контролированием скорости движения анимированного элемента, они выглядят неестественно, так как перемещаются в пространстве с линейной скоростью.

Из-за таких ограничений приходится жертвовать либо качеством анимации, либо временем для её оптимизации. В подобной ситуации на помощь и приходит Lottie.

Примеры использования

Благодаря возможностям, которые предоставляет Lottie-анимация, неудивительно, что данную технологию используют такие известные компании как: Google, Elevate, eero, The New York Times, Instacart, Uber, Walgreens, iHeartRadio, Сбербанк, Telegram.

Область применения Lottie-анимации на сайтах и приложениях имеет большой охват — от анимированных иллюстраций, как у Google и Elevate

до анимированных UI-эффектов и статичных логотипов как у The New York Times.

Последние в своем приложении используют Lottie для статичного логотипа темной и светлой темы, раньше им приходилось создавать 2 отдельных логотипа — белый и черный. Благодаря Lottie приложение автоматически меняет цвет логотипа в зависимости от выбранной темы на противоположный.

Анимированная навигация

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

Гамбургер

Анимированная кнопка «гамбургер» усиливает ощущение прямой манипуляции и делает переход к новому состоянию более очевидным для пользователей.

Текущее состояние системы

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

Like / Dislike

Хорошо продуманные анимированные UI-эффекты для кнопки «лайк». Подобные анимации служат для того, чтобы взаимодействие с продуктом стало более увлекательным и приятным.

Telegram

Telegram используют данную технологию для анимированных стикерпаков, так как Lottie позволяет получить высококачественную анимацию без потери качества весом в несколько килобайт. А еще мы создали свой стикерпак, который ждет, чтобы вы его добавили к себе в коллекцию :)

Как использовать Lottie

Чтобы вам не запутаться при установке плагина Bodymovin, мы разбили процесс на несколько шагов:

Шаг 1

Прежде всего потребуется скачать плагин для Lottie, для этого есть несколько способов, которые перечислены на странице BodyMovin на Github. Вот самый простой из них:

  • Скачайте Zip-файл по ссылке на Github.
  • Извлеките архив и установите. zxp файл.
  • Скачайте и установите ZXP Instraller c aescripts.com и запустите файл.

Шаг 2

Теперь, когда все установлено, самое время запустить After Effects.

  • Откройте свой проект в After Effects и выберите расширение Bodymovin.

Window > Extension > Bodymovin

  • Откроется панель Bodymovin. Выберите нужную композицию и укажите путь для рендера, нажмите на зеленую кнопку, и плагин bodymovin закодирует вашу анимацию в. json файл.

3. Найдите экспортированный файл. json в указанной папке.

Шаг 3

Как только ваша анимация будет готова, вы можете сразу подключить её к своему приложению или на свой сайт. В зависимости от выбранной вами платформы подключите библиотеку Lottie для iOS, Android или React Native. Анимация в формате. json весит довольно мало, и это хорошо!

Библиотека Lottie позволяет настроить режим воспроизведения анимации и установить триггер действия анимации (клик, наведение и т.д.).

Ограничения Lottie-анимации:

1. Придется отказаться от растровых эффектов After Effects и использовать анимацию шейпов.

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

2. Возможно, придется обойтись без экспрешнов

Как и эффекты, не все экспрешены поддерживается Lottie библиотекой. Экспрешн — это команда для определенного свойства, написанная на языке JavaScript, которая задает значение свойству, для которого она написана. Регулярно в Lottie добавляется поддержка некоторых экспрешенов — можно посмотреть по ссылке. Если вы решили использовать в своей анимации экспрешены, то советуем тестировать анимацию в нескольких браузерах.

3. Придется свести к минимуму использование alpha matte и alpha inverted matte

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

4. Использовать как можно меньше кейфреймов

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

Как протестировать анимацию

Существует сервис Lottie Files, в него встроен web-плеер Lottie, и на нем можно протестировать вашу анимацию перед тем, как передавать ее в разработку.

в футере можно найти ссылки на приложение Lottie для iOS и Android. Приложение позволяет дизайнеру тестировать анимацию с телефона и видеть все недочеты на этапе тестирования.

Преимущества использования Lottie

  • Использование Lottie-анимации значительно экономит время по сравнению с реализацией сложной анимации кодом.
  • Lottie также имеет дополнительный механизм кэширования, поэтому часто используемые анимации могут загружать кэшированную копию, что увеличит скорость загрузки страницы или экрана.
  • Одно из главных преимуществ Lottie это — маленький вес и адаптивность. Благодаря тому, что библиотека работает с векторной графикой, анимация будет выглядеть хорошо на разных разрешениях экрана.
  • Библиотека позволяет управлять процессом анимации. Это может пригодиться, если вы планируете использовать различные триггеры на своей анимации.
  • Кроссплатформенное решение для iOS, Android, Web.
  • Большое количество элементов из After Effects позволяют дизайнеру реализовать задуманную анимацию.

Перспективы развития технологии

Сегодня Lottie применяется повсеместно от статичных логотипов до анимированных иллюстраций. С технологией Lottie Web нет необходимости в анимации, сохраненной в формате .gif, потому как анимация сохраненная в .json формате не теряет первоначального качества и весит в разы меньше. Стоит отметить, что с 2015 года компания Airbnb регулярно совершенствует технологию, и если еще несколько лет назад Lottie не поддерживала эффекты из After Effects, то сегодня спокойно поддерживает многие из них.

Хелперы и советы

Для экономии времени при переносе проекта из Figma/Sketch советуем использовать плагин AEUX, Это плагин, который экспортирует все слои из Sketch или Figma в After Effects за несколько секунд. Установка займет не больше 10 минут, но в будущем это сэкономит вам уйму времени и нервов.

Плюсы AEUX:

  • Более высокая скорость сборки артбордов.
  • Поддержка редактирования символов для текста и вложенных символов.
  • Экспорт изображений был улучшен за счет рисования собственных АE градиентов и устранения лишних изображений.

Использование библиотеки Lottie существенно упрощает внедрение анимации в приложение или сайт и открывает массу возможностей для реализации идей дизайнера.

Пишите в комментариях, был ли у вас опыт работы с этой технологией, и что вы о ней думаете!

0
75 комментариев
Написать комментарий...
Slava Itprofi
Как обычно реализовываются анимации в приложениях и сайтах

ну вообще есть APNG, для мелкой анимации вполне неплох (пример http://littlesvr.ca/apng/samples.html
), с 15 года его поддерживают все браузеры "из коробки", так что упоминания он точно заслуживает ;) Также можно делать в After Effects, с прозрачностью, и даже растровыми эффектами.

Согласен, что lottie круче, вектор, все дела, но хотелось бы его стандартной поддержки в виде img или своего тега.

Ответить
Развернуть ветку
Dmitry Mezenin
Согласен, что lottie круче, вектор, все дела, но хотелось бы его стандартной поддержки в виде img или своего тега

Эм, SVG?

Ответить
Развернуть ветку
Slava Itprofi

SVG как формат не подразумевает никакой анимации, а lottie это как костыль, который в рамках одного файла заворачивает тегами <g> кадры анимации, являющиеся сами по себе отдельными svg , перебирая по таймеру и пользуясь display для показа конкретного кадра. Напомню, что g введены были не для анимации, а для отдельных слоев path одного изображения.

Ответить
Развернуть ветку
Владимир
SVG как формат не подразумевает никакой анимации

да что вы говорите...
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate
https://css-tricks.com/guide-svg-animations-smil/

Ответить
Развернуть ветку
Slava Itprofi

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

Update December 2015: At the time of this update, SMIL seems to be kinda dying.

Ладно, ок, подразумевались анимации, которые канули в лета. А сейчас ситуация по SVG такая, то все анимации делаются через CSS (примеры https://onextrapixel.com/examples-of-svg-animations/), а lottie делает из SVG просто аналог GIF, перебирая кадры.

p.s. Я о чем вообще имел ввиду под отдельным форматом - то что можно в HTML вставить тег например <ASVG> , в нем указать путь к файлу, пусть это и будет SVG или JSON, и все, векторная анимация играет "из коробки", можно поставить атрибуты, повешать события, и все это нативно, как jpg, без библиотек, поддерживается любым браузером.

Ответить
Развернуть ветку
Dmitry Mezenin

Хорошие примеры можно глянуть, например, тут: https://www.svgator.com любуйтесь)

в нем указать путь к файлу, пусть это и будет SVG или JSON, и все, векторная анимация играет "из коробки", можно поставить атрибуты, повешать события, и все это нативно, как jpg, без библиотек, поддерживается любым браузером.

Так это так и работает, JS или CSS анимация помещается внутрь SVG и вставляется обычным образом, как обычный SVG)

Ответить
Развернуть ветку
Slava Itprofi

Прежде чем мне минус лепить, еще раз перечитайте, что я пишу. Я разработчик, в том числе и фронтенд , в том числе и с анимациями имею дело, и с webgl и прочим. Так вот, то что вы скинули , это анимация path с помощью js и css, так и делают все
Просто так взять svg файл , и чтобы он без плеера стал анимированным - нельзя, для примера вырезал у них svg , без скриптов и css ничего не играет.
Допускаю, что они могут упаковать js и css в атрибут файла, а плеер (именно их плеер) распаковывает на лету и начинает все вертеть, есть пример именно одного их svg файла , короый играется в плеере?

Ответить
Развернуть ветку
Slava Itprofi

сам нашел, дейсвительно, если можно ограничиться css (цикличные дейсвия), завертывают атрибутом style прямо в svg, если же чтото нельзя описать css, то уже добавляется js и тогда нужно добавить их плеер, работающий примерно как либа SVG.js

цитата из их экспортера:

CSS animation type doesn't support all animators. for advanced animators such as moving an object on a custom curved path, the exported file will require you to include JavaScript.

p.s. Опять же, к чему мы пришли, к тому, что SMIL никто в SVG не использует, т.к. нет поддержки браузерами, а для анимации используется CSS, а для сложных анимаций нужен JS. Поэтому вопрос о стандартизованном векторном формате анимации остается открытым.

Ответить
Развернуть ветку
Арсений Кушнир

https://codepen.io/madetoday/pen/MYxYeo/

Не нужен никакой css и js, в svg все может работать из коробки

Ответить
Развернуть ветку
Slava Itprofi

Не все он может из коробки, лишь ограниченные цикличные анимации, без эвентов, пример чего никогда не сможет из коробки https://jsfiddle.net/Fuzzy/f2wbgx5a/

Да и еслиб он все мог, зачемто все юзают Lottie , SVG.js , сервисами аля SVGator? То, что мне присылают дизы, в фигме, обычно это анимации path через CSS, надо их напрячь, почему они SMILS не пользуются.

Ответить
Развернуть ветку
Арсений Кушнир

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

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

Почему? Очевидно: дизайнер не разработчик, они редко даже верстку на себя берут, не говоря уже об технического описания анимации в SVG или CSS. Этим по-хорошему фронтенд должен заниматься. Но влепить же огромный я тяжеловесный Lottie ж проще.

А CSS добавить к анимации SVG не вижу проблемой - с его помощью некоторые вещи делаются проще, в том числе легко сделать изгибы как по вашей ссылке. SVGator выгружает в том числе в SVG+CSS

Ответить
Развернуть ветку
Slava Itprofi

Ну так мы к чему пришли, т.к. нет нормального единого стандарта на анимированный вектор, все лепят свой велосипед) до сих пор многие на мелкую анимацию gif делают. Или из недавнего про новый winamp.com , ради интереса глянул код, думал чтото интересное найду, так нет, все анимации на главной в mp4 , как эта https://www.winamp.com/assets/img/animation/animation-1.mp4 *facepalm*

А CSS добавить к анимации SVG не вижу проблемой

я так и делаю, да и дизы так присылают в основном, вроде в фигме для такой анимации есть плагин, который как раз в css все заворачивает.

Ответить
Развернуть ветку
72 комментария
Раскрывать всегда