Советы, библиотеки и дополнительные материалы по CSS-анимации
Введение
Была глубокая ночь. В темную комнату через деревянные окна проникал лунный свет. Он недостаточно освещал мой деревянный стол с ноутбуком, блокнотом и синей ручкой. Поэтому я протянул свою руку к настольной лампе и включил её.
На компьютере был открыт текстовой файл со списком статей и библиотек про веб-разработку. Он постоянно пополнялся новыми данными.
Свернув его, я пошел на улицу в поисках кинотеатра с Deadpool’ом запустил браузер и стал блуждать по окрестностям интернета. Во время прогулки я наткнулся на интересную js-библиотеку по созданию css-анимации, которую добавил в открытый до этого текстовой документ… Как оказалось, по этой теме у меня уже набралось больше 40 ссылок на материалы и библиотеки.
… С того дня в моей голове засела мысль: «Я так и не посмотрел Deadpool пора уже структурировать эту информацию и рассказать о ней людям». Поэтому во время работы над облачной IDE «mr. Gefest», я выделил несколько вечеров (оказалось далеко не несколько) для написания статьи, которую теперь Вы читаете.
В ней Вы узнаете, что такое css-анимация, какие существуют библиотеки (css/js), получите список готовых решений с других сайтов и узнаете о новой технологии web-анимации.
Итак, приступим.
СSS-анимация
CSS-анимация — это изумруд веб-технологий для оживления Ваших сайтов. При помощи неё можно создать красивые и плавные переходы (смена цвета, изменение размеров и так далее) у объектов без применения JavaScript.
Он состоит из CSS-Transitions и CSS-Animations.
Transitions позволяет управлять скоростью анимации при изменении css-свойств.
Animations предоставляет возможность создавать более сложные анимации с несколькими промежуточными переходами.
При создании эффектов часто используют CSS-Transforms и content pseudo-elements (псевдоэлементы).
Transforms дает возможность масштабировать, вращать, сдвигать и наклонять DOM-элемент.
Content pseudo-elements after и before позволяют добавлять содержимое (через css) до и после элемента без изменения html.
Я не буду подробно расписывать каждый элемент CSS-Transitions, CSS-Animations, CSS-Transforms и content pseudo-elements, потому что в интернете существуют статьи, отлично раскрывающие их:
Поддержка браузерами:
Обертки для создания кроссбраузерных CSS-Animations (key-frames):
Советы по СSS-анимации
! Старайтесь использовать анимацию только для улучшения взаимодействия между пользователем и интерфейсом
Анимацию в интерфейсах необходимо применять только для улучшения общения между программой и пользователем. Вставлять только из-за того, что это красиво или необычно, не следует. Необходимо все хорошо обдумать заранее.
Бывает откроешь блок с поиском, а там поле, заголовок и кнопка по-разному анимируется с разной скоростью. Будто мультик в интерфейсе. Это создает дискомфорт и неудобство.
Кроме того, при использовании большого количества анимации браузер может начать тормозить, даже если будет обрабатывать их отдельно в GPU.
! По возможности применяйте производительные css-свойства для анимации
При изменении css-свойств браузер проходит через 4 этапа отображения DOM: recalculate style, layout, paint, composite.
Вычисление стилей (recalculate style) — анализируется все CSS-правила и вычисления итогового style для каждого DOM-элемента.
Перерасчет макета (layout) — определение положения элементов на экране, их размеров и других первичных данных.
Прорисовка (paint) — вывод всех визуальных частей элементов (цвет, размер текста, шрифт, изображение, тень и так далее).
Компоновка (composite) — собираются все прорисованные элементы в единую композицию.
Вычисление стилей, перерасчет макета (layout) и прорисовка (paint) потребляют гораздо больше ресурсов, чем composite (компоновка).
Например, для css-свойства »transform: translate» создается дополнительный, невидимый слой, в котором происходят все изменения. Он обрабатывается на этапе компоновки (в невидимом дополнительном слое без сдвига соседних элементов) и выполняется в GPU, а не в CPU. За счет использования GPU, изменения происходят плавно без задержек. Вы можете увидеть это на видео.
Использование GPU вместо CPU во время выполнения анимации особенно эффективно на телефонах и планшетах, где ресурсы центрального процесса ограничены.
Одни css-свойства проходят через 4 этапа отображения, другие через один или два. Необходимо их знать и грамотно применять в анимации. Например, при изменении «Height» какого-то DOM-объекта браузеру придется пройти через recalculate style, layout, paint и composite, потому что из-за него могут сдвинуться другие элементы страницы, а значит для каждого из них тоже необходимо сделать перерасчет позиции, размеров и других параметров.
Старайтесь использовать только те css-свойства, которые будут проходить через компоновщик или Paint + Composite:
- transform: rotate;
- transform: scale;
- transform: translate;
- opacity;
- color.
Материалы по теме:
! Применяйте will-change для оптимизации анимации с умом
Относительно недавно появилось css-свойство — will-change. С его помощью можно сообщить браузеру, что конкретное свойство будет изменяться и его вычисления необходимо оптимизировать до начала анимации.
Will-change принимает следующие значения:
- auto — действия браузера по умолчанию/сбрасывает принудительную оптимизацию;
- scroll-position — ожидает анимацию/изменение полосы прокрутки конкретного элемента;
- contents — ожидает анимацию/изменение в контенте конкретного элемента;
- custom-ident — перечисление css-свойств через запятую.
Если написать:
.text {
will-change: opacity;
-webkit-transition: opactiy 0.5s ease;
-moz-transition: opactiy 0.5s ease;
-o-transition: opactiy 0.5s ease;
transition: opactiy 0.5s ease;
}
.text:hover {
opacity:0.6;
}
То браузер заранее постарается оптимизировать анимацию для ».text».
Некоторые веб-разработчики экспериментальным путем выяснили, что will-change лучше вставлять не сразу, а за мгновение до начала анимации, а после завершения — удалять, так как оптимизация забирает часть оперативной памяти. Если так не поступить, то сайт будет занимать дополнительную память, даже если 99% времени эта анимация не используется. Такое добавление и удаление will-change делается при помощи javascript.
Стоить учесть, что если на сайте присутствуют элементы, в которых часто вызывается анимация, то для них логично указать will-change сразу в стилях.
Поддержка браузеров:
- Chrome 36+;
- Firefox 36+;
- Opera 26+;
- Android 36+;
- Safari, IE, iOS — нет (на 22 марта).
Статьи для ознакомления:
! Грамотно подбирайте скорость анимации
При реализации разного рода эффектов в интерфейсе пользователя необходимо правильно подбирать скорость выполнения. Например, диалоговые окна во время открытия должны будто наплывать, медленно и плавно, а при закрытии быстро уходить (после выполнения задачи пользователи хотят побыстрее закрыть всплывающее окно). В среднем анимация не должна быть дольше 500 секунд.! Собирайте операции чтения и обновления в пакеты
Так делать нельзя:
var b1=document.getElementById('box1');
var b2=document.getElementById('box2');
var b3=document.getElementById('box3');
var b2W=b2.offsetWidth;
b2.style.left=b2W+'px';
var b3W=b3.offsetWidth;
b3.style.left=b3W+'px';
b1.style.left='0';
А так нужно:
var b1=document.getElementById('box1');
var b2=document.getElementById('box2');
var b3=document.getElementById('box3');
var b2W=b2.offsetWidth;
var b3W=b3.offsetWidth;
b2.style.left=b2W+'px';
b3.style.left=b3W+'px';
b1.style.left='0';
Почему?
Если Вы читали прошлые советы, то узнали, что при выводе данных на экран, браузер проходит через 4 этапа отображения: вычисления стилей, расчета макета, прорисовки и компоновки.
В плохом примере два раза происходит принудительный перерасчет макета в строчках »var b3W=b3.offsetWidth; » и »var b3W=b3.offsetWidth; », потому что до этого было изменено css-свойство (left). Без пересчёта браузер просто не сможет точно определить «offsetWidth», потому что есть вероятность, что новое значение css-свойства повлияло на него.
Пожалуйста, группируйте операции чтения и обновления!
Дополнительный материал:
! Проверяйте анимацию при помощи браузерных инструментов разработчика
Странно, но за все это время мне не попадался материал о тестировании анимации в браузере. А ведь эта тема достойна отдельной статьи.
При помощи инструментов разработчиков в браузерах можно найти ресурсоемкие операции анимации, которые следовало бы исправить. Поэтому тестируйте анимацию при помощи них!
В этом совете я кратко опишу возможности нескольких браузеров для тестирования анимации.
Google Chrome
Через Chrome удобнее всего отлаживать анимацию. Во вкладке инструментов разработчика «Timeline» присутствует:
- Временная шкала с операциями отображения;
- Графические слепки сайта (скриншоты) для каждого шага;
- Подробный список этапов отображения;
- Общее время работы на каждом шаге;
- Подробное описание каждого этапа;
- Профилирование процесса отрисовки;
- И другие мелкие возможности.
В отладочной информации Google Chrome вы узнаете, какие операции нужно оптимизировать, а какие работают хорошо. В его подсказках присутствуют ссылки на статьи о способах исправления. В других браузерах такого не встречал.Safari
В Safari анимация оценивается через вкладку «Шкала времени» раздела «Макет и рендеринг».
На верхнем блоке с временной шкалой сможете узнать, когда проявлялся конкретный этап отображения сайта. В нижнем блоке увидите очередность их выполнения. В подразделе «Отрисовка фреймов» получите более подробную информацию о каждом этапе.
В Safari откладка анимации мне показалась мало информативна. Нет советов по его улучшению в отличие от Google Chrome.
Mozilla Firefox
Для тестирования анимации он подходит меньше всего. Есть временная шкала со всеми шагами по анимации и блоком их очередности. Подробная информация о этапах отсутствует.
Firefox больше подходит для тестирования процесса разбора html и работы сайта (выполненные операции сборщика мусора, разбор html/xml, редукция CC Graph и так далее).
! Применяйте функцию requestAnimationFrame
Раньше при создании анимации на js использовали setInterval/setTimeout. В них задавали интервал повторений (1000ms / 60(fps) = 16.7ms в идеале) и запускали эффекты. Это решение имело много недостатков:
- Если страница находится в неактивной вкладке, то она все равно будет работать и тратить ресурсы компьютера;
- Функция требует перерисовку экрана не в то же время, когда это требует компьютер. Поэтому устройству/ПК приходится использовать дополнительные ресурсы для синхронизации анимации с частотой обновлений экрана;
- Анимация может поддёргиваться, так как js — однопоточный и в тот момент, когда должна произойти анимация, может выполняться другая операция,
К счастью, технологии не стоят на месте. Для решения этих проблем была придумана функция requestAnimationFrame. Её преимущества:
- В неактивных вкладках анимация останавливается для экономии ресурсов компьютера (памяти, CPU, GPU и расход батареи);
- Скорость прорисовки (repaint) подстраивается под частоту обновления экрана и выполняется только тогда, когда компьютер к этому готов;
- Уменьшает FPS при сильных нагрузках для экономии батареи и ресурсов компьютера;
- Все анимации объединяются в одну браузерную перерисовку (а не выполняет по отдельности) — это уменьшает потребление ресурсов и ускоряет отображение.
Отрицательные стороны нового решения:
- В разных браузерах используется разный API (решается через polyfill);
- Сложно контролировать FPS анимации (только при помощи «костылей»);
- Не все браузеры поддерживают новую технологию, из-за чего в старых версиях используется все тот же setInterval (IE10+);
- Все вычисления надо делать за 16.7 mc (этого может не хватить).
Дополнительный материал:
! Выбирайте тип (css или js) библиотеки исходя из задачи
У каждого типа библиотеки есть недостатки и преимущества. Их стоит учитывать при выборе.
Преимущества css-библиотек:
- Удобно разрабатывать простые анимации;
- Некоторые свойства сразу выполняются в GPU;
- Не нужно утяжелять сайт js-кодом.
Недостатки css-библиотек:
- Трудно создавать и поддерживать сложные анимации;
- Недостаточный контроль над процессом анимации и его появлением (например, включить при клике или остановить на конкретной секунде выполнения).
Преимущества js-библиотек:
- Можно создать анимацию любой сложности;
- Присутствуют механизмы контроля анимации (включать/выключать, останавливать на конкретной секунде и так далее);
- В некоторых случаях применимы не только к css, но и к SVG и canvas;
- Иногда быстрее css-библиотек;
- Разнообразные easing function (с 2-мя и более точками кривых).
Недостатки js-библиотек:
- Увеличивает размер сайта;
- Избыточен для простых анимаций;
- Сложен для изучения.
Стоит помнить и о третьем типе. Можно написать анимацию самому или скопировать подходящую часть исходного кода из готовой библиотеки.
Теперь перейдем к изучению css- и js-библиотек.
CSS-библиотеки
При помощи специальных css-библиотек можно быстро создать простую анимацию:
- Отскок;
- Тряска;
- Качели;
- Желе;
- Медленное исчезновение/появление;
- Кувырок;
- Поворот;
- Скольжение;
- и другие.
Анимация подключается через классы при помощи javascript или вручную. Рассмотрим существующие библиотеки.
Библиотека с 75 эффектами. Существует с 2011 года. До 2013–14 года предоставляла online-конструктор эффектов. Позже разработчики его убрали и сделали build-генератор при помощи Gulp.js. Все эффекты используют @keyframes.
Его удобно применять на продающих страницах.
Создатели библиотеки разбили эффекты на 14 категорий:
- Attention Seekers;
- Bouncing Entrances;
- Bouncing Exits;
- Fading Entrances;
- Fading Exits;
- Flippers;
- Lightspeed;
- Rotating Entrances;
- Rotating Exits;
- Sliding Entrances;
- Sliding Exits;
- Zoom Entrances;
- Zoom Exits;
- Specials.
Сайт: Animate.css.
Effeckt.css появился в 2013 году. При помощи него можно быстро создать красивую анимацию для появления диалогового окна, переключения вкладок, добавления элементов и много другого.
Он разбивает эффекты не по типу и стилю, как другие, а по конкретному назначению:
- 34 эффекта для диалоговых окон;
- 23 эффекта для появления информационного блока возле конкретного элемента;
- 20 эффектов для наложения на кнопки каких-либо данных (иконки, текст и другое);
- 8 эффектов появления/исчезновения элементов списка;
- 8 эффектов прокручивания элементов списка;
- 27 эффектов появления/исчезновения навигационной панели (мобильной панели);
- 15 эффектов перехода между страницами;
- 18 эффектов появления дополнительной информации в карточке с изображениям (или, например, для галереи картинок);
- 4 простых эффекта появления подсказки;
- 4 эффекта для переключателей;
- 7 эффектов для вкладок.
Effeckt.css написан на SCSS и большинство его эффектов не используют @keyframes, поэтому его код легче других.
Сайт: Effeckt.css.
Библиотека для создания эффектов, которые будут срабатывать при наведении курсора мыши на элемент. Его удобно применять для кнопок.
Анимация разбита на следующие категории:
- 27 эффектов 2D трансформации;
- 18 эффектов изменения фона элемента;
- 27 эффекта для элемента с текстом и иконкой;
- 18 эффектов Border transitions;
- 7 эффекта с тенью;
- 8 эффектов появления треугольника (как в подсказке);
- 4 эффекта загибания уголка.
Hover.css написан на less, scss и css.
Сайт: Hover.css.
Основан на Animate.css. В отличие от других библиотек он обладает множеством необычных эффектов:
- Магические;
- Bling;
- Статичные эффекты;
- 3D-перспективы;
- 3D-повороты;
- Slide;
- Со сложным движением;
- С эффектом взрыва;
- Пространственные;
- и другие.
Сайт: Magic animations.
Awesome — это набор из 89 эффектов от украинского разработчика, написанных на чистом css. Они разбиты на 12 категорий:
- Fade;
- Slide;
- Bounce;
- Roll;
- Rotbo;
- Flip;
- Rotate;
- Turn;
- Back;
- Push;
- Clip;
- Else.
Его удобно использовать на продающих страницах.
Сайт: Awesome.
Статья разработчика о библиотеке.
Библиотека с небольшим размером по созданию красивой анимации. Код написан на scss. Предоставляет 11 готовых эффектов:
- Slide from right;
- Slide from left;
- Slide from top;
- Slide from bottom;
- Slide from right bottom;
- Slide from right top;
- Slide from left bottom;
- Slide from left top;
- Slide left right;
- Slide top bottom.
Сайт: Repaintless.
Библиотека с 36 готовыми эффектами и набором простых UI-компонентов. Его анимации делятся на 8 категорий:
- Bounce;
- Perspective;
- Fading Entrances;
- Rotate;
- Agreccives;
- Legend;
- Portrait.
Написан на css.
Сайт: All-animation.
Анимационная библиотека из 27 готовых эффектов. Построена на Rebound.js от facebook.
Позволяет сгенерировать css-анимацию при помощи json-объекта и скрипта reboundGet.js. Это удобно, ведь можно создать свои эффекты при помощи скрипта, а на сайте уже потом подключить только css без js.
Из-за готовых css-эффектов и механизма генерации, я решил включить библиотеку не в javascript-список, а в css.
Сайт: Reboundgen.
Morphodynamics — это библиотека для создания красивых эффектов. Предоставляет 47 вариантов анимаций.
Все эффекты делятся на 6 групп:
- Miscellaneous;
- Background;
- Border Transitions;
- Shadow Transitions;
- 2D Transforms;
- Bubbles.
Имеет 16 готовых тем для стилизации. Библиотека хорошо подходит для создания анимаций у кнопок, меню и заголовков карточек товаров.
Изначальный код написан на less.
Сайт: Morphodynamics.
Простая библиотека для создания анимаций.
Имеет 37 готовых эффектов:
- Bounce;
- growIn;
- FadeIn;
- Shake;
- RotateIn;
- RollIn;
- Wiggle;
- И другие…
Написан на less.
Сайт: Css3animateit.
Маленькая библиотека с 16 готовыми эффектами для анимации:
- SlideUp;
- Slide Down;
- Slide Left;
- Slide Right;
- Slide Expand Up;
- Expand Up;
- Fade In;
- Expand Open;
- Big Entrance;
- Hatch;
- И другие…
Несмотря на небольшое количество эффектов, они полностью удовлетворяют потребности в анимации при разработки одностраничников.
Как и во многих библиотеках, в ней используются CSS3 @keyframes.
Сайт: CSS3 Animation Cheat Sheet.
Библиотека с готовым набором анимаций. Имеет 9 категорий эффектов:
- FadeIn;
- FadeOut;
- Expand;
- Stamp;
- Shrink;
- Swing;
- DropIn;
- Plop;
- HingeFlip.
Всего в его арсенале 29 анимаций. Написан на less, поэтому можно сделать свою сборку.
Сайт: Tuesday.
JS-библиотеки
Как Вы понимаете, css — это декларативный язык. Вся его анимация линейна и не меняется в зависимости от ситуации. Поэтому на чистом css нельзя сделать нормальную анимационную логику.
Javascript-библиотеки расширяют возможности и убирают ограничения css-решений. При помощи них можно создавать анимацию в зависимости от состояний (один эффект закончился, другой начался; пользователь нажал на кнопку, что-то появилось и так далее).
Благодаря js-решениям можно точно сказать, куда будет перемещен объект на 3-ей секунде. В css достичь такого нельзя, так как все шаги определяются процентами, а не секундами. Можно только примерно узнать, куда объект будет перемещен. Если клиент захочет изменить анимацию, то придется снова все пересчитывать (при создании соответствий между процентом и возможной секундой), а это дополнительная трата времени.
Css-анимация не всегда работает быстрее js-решений (даже когда вычисления проходят в GPU). Об этом рассказано в статье от Css-trick (потерял ссылку, ищю).
Существующие библиотеки можно разделить по типу применения (стандартная анимация и узкоспециализированная) и их сложности (простые и сложные).
Простые:
Двадцать красиво-анимированных элемента, разделенных на 8 групп:
- Menu;
- Grid;
- Add/remove;
- Mail;
- Scroll indicators;
- Forms;
- Video;
- Loaders.
Эффекты настраиваются при помощи атрибутов и js-функций. Присутствует online-builder.
Сайт: Transformicons.
Библиотека для создания анимации. Обладает простым и понятным API. Занимает всего 5kb. Используют 3dmatrix. Заявлено 60 FPS. Можно делать несколько анимаций подряд через цепочку вызовов функций (как в jQuery).
Позволяет изменять позицию, ширину, высоту и прозрачность элементов. При помощи библиотеки можно поворачивать, увеличивать и уменьшать объекты.
Обладает 5 easing functions:
- linear (default);
- ease;
- easeIn;
- easeOut;
- spring.
Позволяет задавать временные функции через математические js-выражения.
Сайт: Snabbt.js.
Ещё одна библиотека без зависимостей. При помощи неё можно делать не только производительную трансформацию, но и изменение стандартных свойств объектов (цвет фона, размер бордюра и так далее). Весит 13–14 кb.
Поддерживает 30 easing functions:
- in;
- out;
- in-out;
- snap;
- linear;
- ease-in-quad;
- ease-in-cubic;
- ease-in-quart;
- ease-in-quint;
- ease-in-sine;
- ease-out-quad;
- ease-out-cubic;
- ease-out-quart;
- ease-out-quint;
- ease-out-sine;
- и так далее…
Так же можно определить свою временную функцию через Cubic-bezier.
Сайт: Move.js.
Разработанная в 2013 году библиотека для создания анимации. Используется как плагин к jQuery 2+. Является оберткой над Animate.css.
При вызове плагина указывается:
- Анимация (можно несколько);
- Время выполнения анимации;
- Количество повторений (один раз, два раза или бесконечно);
- Callback функция, вызываемая после завершения анимации (в ней можно снова обратится к Animo.js);
- Уникальные свойства для конкретных эффектов (градус поворота, сила размытия и так далее);
- Timing-функция.
Animo.js весит 7.2 kb.
Сайт: Animo.js.
Библиотека с необычным способом использования. Вместо стандартного указания классов или вызовов функций javascript, нужно прописать дата-атрибут (data-anijs) и внести в него что-то вроде этого:
if: click, on: h1, do: pulse animated, to: h2
Где (ссылка на язык библиотеки):
- if — любое событие;
- on — объект, к которому будет применяться анимация;
- do — эффект (можно несколько);
- to — объект на котором будет срабатывать событие (on и to могут иметь и разное, и одинаковое значение).
В одном элементе можно указать сразу несколько условий.
Его эффекты разделены на 15 категорий:
- attention_seekers;
- bouncing_entrances;
- bouncing_exits;
- fading_entrances;
- fading_exits;
- flippers;
- lightspeed;
- rotating;
- rotating_entrances;
- rotating_exits;
- specials;
- zooming_entrances;
- zooming_exits;
- sliding_entrances;
- sliding_exits.
Всего в библиотеке 70 эффектов. Благодаря их online-builder (http://anicollection.github.io/) Вы можете выбрать необходимые эффекты и сгенерировать свою версию AniJS.
Сайт: Ani.js.
Библиотека для создания производительных анимационных эффектов. Можно использовать как плагин к jQuery. Поддерживает ie8+ и современные браузеры на компьютерах, телефонах и планшетах.
Он позволяет создавать эффективные анимации потому что:
- Автоматически собирает операции чтения и записи в пакеты;
- Применяет requestAnimationFrame;
- Использует производительные css-свойства и лучшее методы кеширования конечных значений анимации.
Как и в других библиотеках, при его использовании указывается список css-свойств и настройки (время выполнения, easing и callback функция, зацикленность анимации и так далее).
Дополнительная информация:
Сайт: Velocity.
Небольшая библиотека для создания анимации (7 kb). Поддерживает Chrome, Safari, Firefox, Internet Explorer 10 и мобильные браузеры. Для эффектов используется только opacity и 2D/3D трансформация, так как это одни из самых производительных css-свойств.
Во время применения необходимо указать:
- Эффект (translate, rotate, scale and opacity);
- Время выполнения;
- Easing function (25 типов);
- Задержку.
Для имитации реальной физики необходимо будет использовать дополнительные параметры.
В Animo.js можно управлять анимацией: останавливать, ставить паузу и возобновлять.
Сайт: Animatic.js.
Плагин к jQuery для создания анимации. Использует производительные css-свойства для высоких FPS и позволяет применять неэффективные (не рекомендуется).
Предоставляет следующие функции:
- x (px) — изменение координат по оси X;
- y (px) — изменение координат по оси Y;
- translate (x, y) — изменение координат по двум осям;
- rotate (deg) — поворот;
- rotateX (deg) — поворот по оси X;
- rotateY (deg) — поворот по оси Y;
- rotate3d (x, y, z, deg) — 3D поворот;
- scale (x, [y]) — уменьшение/увеличение элемента;
- perspective (px) — создание эффекта перспективы;
- skewX (deg) — наклон по оси X;
- skewY (deg) — наклон по оси Y.
Поддерживает 29 временных функций.
Плагин можно использовать в цепочке вызовов (.transition ().transition ().transition ()…).
Сайт: TransitJS.
Анимационная библиотека от создателей css-фреймворка «Foundation».
Поддерживает 5 типов анимации:
- Slide;
- Scale;
- Hinge;
- Fade;
- Spin.
Предоставляет 3 скорости (normal, slow, fast) и 3-и easing-функции (linear, ease, bounce). Используется через css-классы или js-функции.
Сайт: Zurb Motion-UI.
Библиотека, в которой анимация добавляется к DOM элементам через data-атрибуты:
- data-animation — эффект;
- data-delay — задержка;
- data-duration — время выполнения.
Предоставляет 15 эффектов.
Сайт: Shift.js.
Небольшая (2.8 kb) библиотека для создании css/svg анимации без зависимостей.
Она позволяет манипулировать 15 css-свойствами:
- translateX, translateY, translateZ;
- scale, scaleX, scaleY, scaleZ;
- rotate, rotateX, rotateY, rotateZ;
- skewX, skewY;
- opacity;
- perspective.
При создании анимации указывается:
- el — анимированный элемент;
- duration — время выполнения анимации;
- delay — задержка перед началом анимации;
- easing — временная функция (29 вариантов);
- loop — для зацикливания анимации;
- direction — направление (normal, reverse, alternate);
- begin — функция выполняющаяся перед началом анимации;
- complite — функция выполняющаяся после завершения анимации.
Сайт: AnimatePlus.
Сложные:
Профессиональная библиотека для анимирования объектов. Состоит из:
- TweenMax — основной модуль для создания анимации с множеством дополнительных функций;
- TweenLite — облегченный TweenMax;
- TimeLineMax — модуль для создания и управления последовательностью анимаций;
- TimeLineLite — упрощённая версия TimeLineMax.
К ней идет 19 плагинов (изменение css-свойств DOM элементов, связывание анимации с атрибутами объектов, анимирование svg-элементов и так далее).
Первоначально он разрабатывался для flash, но потом его перенесли на web-технологии.
Библиотеку можно использовать бесплатно только для сайтов, в которых клиенты не платят за использование его функций. В иных случаях необходимо покупать лицензию.
В бесплатной версии нельзя использовать большинство плагинов.
Такой подход разработчиков можно понять, ведь этот проект — их ежедневная работа.
Дополнительная информация:
Сайт: GreenSock.
Библиотека, в которой анимация создается только через javascript. В отличие от прошлого решения он бесплатен.
Состоит из следующих сущностей:
- Samsara.DOM.Surface — объект для анимации;
- Samsara.DOM.Context — объект, куда добавляются все Surface;
- Samsara.Core.Transitionable — позволяет изменять значения (свойства) Surface-объектов с течением времени;
- Samsara.Core.Transform — применение css-transform свойств (например, вместе с Transitionable);
- MouseInput — реакция на движение мышки;
- TouchInput — реакция на прикосновение к экрану;
- ScrollInput — реакция на scroll-движение;
- PinchInput — реакция на нажатие двумя пальцами по экрану;
- RotateInput — реакция на вращения двумя пальцами по экрану;
- ScaleInput — реакция на увеличение/уменьшение расстояния между двумя пальцами на экране.
Transitionables имеет 9 easing функций (можно создать через математическое выражение):
- linear;
- easeIn;
- easeOut;
- easeInOut;
- easeOutBounce;
- easeInCubic;
- easeOutCubic;
- easeInOutCubic;
- easeOutWall.
Подробнее о нем в документации: samsarajs.org/docs/getting-started.html.
Сайт: SamsaraJs.
Popmotion — это библиотека для создания физически реалистичной анимации.
Все его объекты делятся на 5 категорий:
- Standart;
- Actions;
- Roles;
- Primitives;
- Plugins.
Standart:
- ui — ядро библиотеки;
- Actor — анимированный элемент;
- Iterator — используется для запуска методов и обратных вызовов по нескольким элементам;
- Sequence — класс для создания более точной последовательности анимации;
- calc — функции расчета.
Actions:
- Simulate — симуляция физики;
- Track — отслеживание событий мыши при активности конкретного элемента;
- Tween — создание плавной анимации конкретных актеров (Actor).
Roles:
- css — для получения и изменения css-свойств;
- attr — для получения и изменения атрибутов;
- svg — позволяет манипулировать элементами svg объектов;
- drawPath — дает возможность анимировать изменения элементов svg объектов.
Primitives:
- Action — создание конкретных действий для изменения значений (Tween/Simulate/Track) у актеров (Actor);
- Easing — генератор временных функций;
- Input — интерфейс для Actor, чтобы отслеживать входные данные;
- Process — для покадровой синхронизации визуального цикла;
- Role