Цикл уроков об анимациях CSS3. Часть 4. Анимации и программный интерфейс JavaScript
28 марта 2015 | Опубликовано в css | Нет комментариев »
Анимации дают много возможностей, но нередко бывает необходимо добавить взаимодействие или задать определенную последовательность ключевых кадров, которые будут воспроизведены один за другим. Например, анимация может запускаться в ответ на нажатии клавиши или движение мыши.
Типы событий
Анимированный элемент вызывает событие трех типов:
- animationstart — событие вызывается, когда анимация начинается в первый раз.
- animationiteration — событие вызывается в начале каждого цикла, кроме первого раза.
- animationend — событие вызывается, когда анимация завершена, если она вообще заканчивается.
Поддержка браузерами
Эти три типа событий поддерживаются браузерами Firefox, Internet Explorer от версии 10 и Opera версии 12.
К сожалению, браузерам Chrome, Safari и Opera от версии 15 требуется приставка производителя webkit, а также запись в стиле ВерблюжьегоРегистра: webkitAnimationStart, webkitAnimationIteration и webkitAnimationEnd.
Таким образом, нужно задать обработчики событий и для обоих групп браузеров:
// анимируемый элемент var anim = document.getElementById("myelement"); // обработчики событий для браузеров на движке Webkit anim.addEventListener("webkitAnimationStart", AnimationListener); anim.addEventListener("webkitAnimationIteration", AnimationListener); anim.addEventListener("webkitAnimationEnd", AnimationListener); // стандартные обработчики событий anim.addEventListener("animationstart", AnimationListener); anim.addEventListener("animationiteration", AnimationListener); anim.addEventListener("animationend", AnimationListener);
Объект события
В примере кода выше обработчик событий AnimationListener вызывается каждый раз, когда происходит событие анимации. Объект события передается как одиночное значение. Кроме стандартных свойств и методов, он также содержит:
- animationName: название анимации CSS3.
- elapsedTime: время в секундах от начала анимации.
Свойства с этими же названиями доступны во всех браузерах.
Т.е., мы можем предпринять соответствующие действия, например, когда анимация под названием «flash» (вспышка) заканчивается для элемента с идентификатором «myelement»:
function AnimationListener(e) { var t = e.target, name = e.animationName, end = (e.type.toLowerCase().indexOf("animationend") >= 0); if (end && name == "flash" && t.id == "myelement") { // do something } }
Посмотрите демонстрацию работы событий анимации.
На странице с демонстрацией работы находится кнопка. При нажатии на кнопку класс под названием «enable» (включено) будет переключен, что запустит анимацию под названием «flash». Название анимации, тип и время от начала анимации будут показаны в консоли, когда вызывается событие анимации. Когда анимация заканчивается, класс под названием «enable» у кнопки удаляется, чтобы ее снова можно было нажать.
Если вы изучили все уроки этих серий, Вы узнали все о переходах и анимациях CSS3.
Автор урока Craig Buckler
Перевод — Дежурка
Смотрите также:
Похожие статьи
- Использование множественных фоновых изображений CSS: основы
- Создание элементов, расположенных ровно по центру, с высотой и шириной, заданными в процентах
- Использование плавной прокрутки и ее недостатки
- Использование тега span для разделения слов в ссылках в CSS
- Использование порядка расположения множественных фоновых изображений