Свойства animation-timing-function и animation-delay
В CSS помимо продолжительности анимации можно задать скорость перехода от одного ключевого кадра к другому, а также время задержки перед воспроизведением анимации. Для этого существуют два свойства – animation-timing-function
и animation-delay
. Разберем их по порядку.
Свойство animation-timing-function
С помощью свойства animation-timing-function
можно управлять как скоростью всей анимации, так и скоростью смены значений свойств между ключевыми кадрами анимации. Принцип работы свойства аналогичен свойству transition-timing-function
, которое мы не так давно рассматривали.
В качестве значений принимаются те же самые ключевые слова и функции – ease
, ease-in
, cubic-bezier()
и так далее. Мы не будем повторяться – список значений и их описание вы можете найти в уроке по transition-timing-function
. Они полностью совместимы со свойством animation-timing-function
. Там же объясняется тонкая разница между длительностью и скоростью анимации.
Чтобы задать функцию распределения скорости для всей анимации в целом, просто добавьте еще одну строку кода к вашему общему стилю для анимированного элемента:
.traffic-light { animation-name: changeBackgroundColor; animation-duration: 6s; animation-timing-function: ease; }
Если же вы хотите установить разные значения animation-timing-function
для каждого ключевого кадра анимации, тогда следует указать их в правиле @keyframes
. Вернемся к нашему примеру: допустим, мы хотим, чтобы при переходе от первого ключевого кадра ко второму использовалась функция ease-in
, а при переходе от второго кадра к третьему – функция ease-out
. Запись будет выглядеть следующим образом:
@keyframes changeBackgroundColor { from { background-color: red; animation-timing-function: ease-in; } 50% { background-color: yellow; transform: translateY(50px); animation-timing-function: ease-out; } to { background-color: green; transform: translateY(100px); } }
Свойство animation-delay
Данное свойство аналогично свойству transition-delay
. С помощью него можно отложить начало выполнения анимации, указав в качестве значения время в секундах либо миллисекундах:
.traffic-light { animation-name: changeBackgroundColor; animation-duration: 6s; animation-delay: 2s; }
Оба рассмотренных здесь свойства нуждаются в указании префиксов производителей для обеспечения максимальной кроссбраузерности. Впрочем, как уже неоднократно говорилось, префиксы необходимо добавлять ко всем свойствам CSS-анимации.
Далее в учебнике: свойство animation-iteration-count для управления повтором анимации.