Image Image Image Image Image Image Image Image Image Image

Блог Indigo | 20.04.2024

Наверх

Наверх

Свойства 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 для управления повтором анимации.