Spec-Zone.ru › CSS

Свойство 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API