CSS-live.ru

Руководство по Web Animations API: заключение

Перевод статьи Web Animations API Tutorial Conclusion с сайта danielcwilson.com, опубликовано на css-live.ru с разрешения автора — Дэна Уилсона (твиттер — @dancwilson).

Это заключение серии вводных/учебных статей про Web Animations API, который вот-вот появится в браузерах. Если у вас есть мысли/вопросы, вы заметили, что я неправильно истолковал спецификацию, или хотите обсудить со мной что-то конкретное в будущих статьях, то обращайтесь ко мне в Twitter, @dancwilson.

Мы неплохо поработали и, надеюсь, выяснили, что из себя представляет Web Animations API. В завершении этой серии давайте резюмируем, что мы обсудили ранее и рассмотрим, что ещё не реализовано.

Зачем заморачиваться с API?

Во введении мы выяснили, что этот API даёт возможность объединять подходы к анимации из CSS, JS и SVG… с целью взять от них самое лучшее. Это значит, что, например, JavaScript может наконец дорваться до аппаратного ускорения, которое уже много лет имеется у CSS, и вы не ограничиваетесь декларативной природой CSS. Этот API предназначен не для замены библиотек (напр. GSAP), а просто  чтобы дать больше возможностей на уровне браузера.

Firefox и Chrome уже начали реализацию, и у Edge есть кое-какие наработки. Пока авторы дописывает спецификацию, уже сегодня можно поиграться с этим API при помощи полифилла.

Основы анимации

Для создания базовой анимации мы действуем по аналогии с CSS — задаем ключевые кадры и свойствадля временной шкалы.

var player = document.getElementById('toAnimate').animate([
    { transform: 'scale(1)', opacity: 1, offset: 0 },
    { transform: 'scale(.6)', opacity: .6, offset: 1 }
  ], {
    duration: 700,
  });

Управление временной шкалой – очевидная вещь, отсутствующая в сегодня в CSS. Считывать состояние анимации можно при помощи свойства playState, а изменение состояния – методами play(), pause(), и finish(). Также с помощью свойства playbackRate (доступного для чтения/записи) можно изменять скорость воспроизведения. Можно проверять (или изменять) свойство currentTime, и можно установить функцию обратного вызова onfinish, которая вызывается по завершению анимации.

Множественные анимации и группировка

Web Animations API позволяет множественные анимации для элемента, создавая отдельные объекты анимации. По умолчанию временная шкала для document предоставляет доступ ко всем анимациям с помощью метода getAnimations(). Анимации можно группировать, проигрывая их вместе или одну за другой, при помощи групповых и последовательных эффектов (доступных в полифилле, хоть их и нет в первой спецификации).

Траектория движения и будущее

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

Интервал

Если значения смещения не указаны, то текущие реализации предлагают по умолчанию устанавливать интервал между ключевыми кадрами так, что они окажутся распределены равномерно (к примеру, у трёх кадров смещения будут 0, .5 и 1). Спецификация также определяет способ задания темпа пошаговой анимации на основе свойств, чтобы у них была постоянная скорость изменения. Это хорошо описано в спецификации в разделе «Интервалы между ключевыми кадрами»

Промисы

Спецификация расширилась и включает промис ready, который будет заменён на новый промис всякий раз, когда анимация отменяется или входит в состояние ожидания (которое обычно происходит перед переходом в состояние «проигрывания» или «паузы»). Кроме того, как мы уже обсуждали в этой серии, у нас будет возможность использовать промис finished для запуска функции после завершения анимации.

Продолжим говорить про WebAnimations API

Люди начинают всё больше говорить про этот API, и я надеюсь на продолжение этого разговора. Спецификации, браузерные реализации и полифилл, постоянно развиваются, и уже готовы для пристального изучения.

Иногда более целесообразен CSS, иногда requestAnimationFrame, а порой наилучшим решением будет использование библиотек. Полезно знать, когда лучше использовать то или иное средство, и этот API предоставляет множество вещей, которые ранее нам не были доступны… так что играйте с ним на здоровье.

Поглядите остальные статьи из этой серии:

P.S. Это тоже может быть интересно:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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