Свойство CSS `animation-direction`
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с сентября 2015 года.
Свойство animation-direction CSS задаёт, должна ли анимация воспроизводиться вперёд, назад или попеременно в обоих направлениях.
Часто удобно использовать сокращённое свойство animation, чтобы задать все свойства анимации сразу.
Попробуйте
animation-direction: normal;
animation-direction: reverse;
animation-direction: alternate;
animation-direction: alternate-reverse;
<section class="flex-column" id="default-example"> <div id="example-element"></div> <button id="play-pause">Play</button> </section>
#example-element {
animation-duration: 3s;
animation-iteration-count: infinite;
animation-name: slide;
animation-play-state: paused;
animation-timing-function: ease-in;
background-color: #1766aa;
border-radius: 50%;
border: 5px solid #333333;
color: white;
height: 150px;
margin: auto;
margin-left: 0;
width: 150px;
}
#example-element.running {
animation-play-state: running;
}
#play-pause {
font-size: 2rem;
}
@keyframes slide {
from {
background-color: orange;
color: black;
margin-left: 0;
}
to {
background-color: orange;
color: black;
margin-left: 80%;
}
}
const el = document.getElementById("example-element");
const button = document.getElementById("play-pause");
button.addEventListener("click", () => {
if (el.classList.contains("running")) {
el.classList.remove("running");
button.textContent = "Play";
} else {
el.classList.add("running");
button.textContent = "Pause";
}
});
Синтаксис
/* Single animation */ animation-direction: normal; animation-direction: reverse; animation-direction: alternate; animation-direction: alternate-reverse; /* Multiple animations */ animation-direction: normal, reverse; animation-direction: alternate, reverse, normal; /* Global values */ animation-direction: inherit; animation-direction: initial; animation-direction: revert; animation-direction: revert-layer; animation-direction: unset;
Значения
Это свойство задаётся списком следующих ключевых слов, разделённых запятыми:
-
normal - Анимация воспроизводится вперёд в каждом цикле. Другими словами, при каждом цикле анимация сбрасывается в начальное состояние и запускается снова. Это значение по умолчанию.
-
reverse - Анимация воспроизводится назад в каждом цикле. Другими словами, при каждом цикле анимация сбрасывается в конечное состояние и запускается снова. Шаги анимации выполняются в обратном порядке, а функции плавности также инвертируются. Например, функция плавности
ease-inстановитсяease-out. -
alternate - Анимация меняет направление в каждом цикле; первая итерация воспроизводится вперёд. Отсчёт для определения чётности или нечётности цикла начинается с единицы.
-
alternate-reverse - Анимация меняет направление в каждом цикле; первая итерация воспроизводится назад. Отсчёт для определения чётности или нечётности цикла начинается с единицы.
Примечание: Если для свойства animation-* указано несколько значений, разделённых запятыми, они применяются к анимациям в том порядке, в котором указаны значения animation-name. О ситуациях, когда количество анимаций и значений свойства animation-* не совпадает, см. раздел Задание нескольких значений свойств анимации.
Примечание: При создании анимаций CSS, управляемых прокруткой указание animation-direction работает ожидаемым образом: например, reverse заставляет анимацию воспроизводиться в обратном направлении по мере продвижения временной шкалы. Значение alternate (в сочетании с animation-iteration-count) заставляет анимацию воспроизводиться вперёд и назад по мере продвижения временной шкалы.
Формальное определение
| Начальное значение | normal |
|---|---|
| Применяется к | всем элементам, ::before и ::after <a href="/en-US/docs/Web/CSS/Reference/Selectors/Pseudo-elements">псевдоэлементам</a> |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | Не анимируется |
Формальный синтаксис
animation-direction = <single-animation-direction># <single-animation-direction> = normal | reverse | alternate | alternate-reverse
Примеры
Изменение направления анимации на обратное
HTML
<div class="box"></div>
CSS
.box {
background-color: rebeccapurple;
border-radius: 10px;
width: 100px;
height: 100px;
}
.box:hover {
animation-name: rotate;
animation-duration: 0.7s;
animation-direction: reverse;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
Результат
Примеры см. в разделе CSS-анимации.
Спецификации
| Спецификация |
|---|
| CSS Animations Level 1 # animation-direction |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
animation-direction |
43
3
|
12
12
|
16
49
5
|
30
15
12.1–15
12–15
|
9
4
|
43
18
|
16
49
5
|
30
14
12.1–14
12–14
|
9
3.2
|
4.0
1.0
|
43
4.4
|
9
3.2
|
alternate |
3 |
12 |
5 |
15 |
4 |
18 |
5 |
14 |
3.2 |
1.0 |
4.4 |
3.2 |
alternate-reverse |
19 |
12 |
16 |
12.1 |
6 |
25 |
16 |
12.1 |
6 |
1.5 |
4.4 |
6 |
normal |
3 |
12 |
5 |
15 |
4 |
18 |
5 |
14 |
3.2 |
1.0 |
4.4 |
3.2 |
reverse |
19 |
12 |
16 |
12.1 |
6 |
25 |
16 |
12.1 |
6 |
1.5 |
4.4 |
6 |
См. также
- Использование CSS-анимаций
- API
AnimationEventв JavaScript - Другие связанные свойства анимации:
animation,animation-composition,animation-delay,animation-duration,animation-fill-mode,animation-iteration-count,animation-name,animation-play-state,animation-timeline,animation-timing-function
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/animation-direction