CSS-свойство animation-play-state
CSS-свойство animation-play-state определяет, воспроизводится анимация или поставлена на паузу. Смотрите примеры и попробуйте сами.
CSS-свойство animation-play-state управляет тем, воспроизводится CSS-анимация или поставлена на паузу. Переключение этого свойства — стандартный способ запустить и остановить анимацию, не удаляя её.
Пауза не сбрасывает прогресс: когда вы возобновляете анимацию, она продолжается с того места, где была остановлена, а не начинается заново с первого ключевого кадра. Это делает animation-play-state идеальным для кнопок «воспроизвести/пауза» и для остановки движения, пока пользователь наводит курсор на элемент или взаимодействует с ним.
На этой странице рассматриваются синтаксис свойства, допустимые значения, примеры управления через наведение курсора и через JavaScript, а также поведение свойства при нескольких анимациях на одном элементе.
Когда использовать
- Пауза при наведении — останавливайте зацикленную анимацию (бегущую строку, спиннер, карусель) при наведении курсора, чтобы пользователи могли читать или взаимодействовать с элементом.
- Кнопки воспроизведения/паузы — переключайте значение из JavaScript по клику, как кнопка воспроизведения в медиаплеере.
- Отложенный запуск — объявите анимацию в состоянии
paused, а затем переключите наrunning, когда выполнится нужное условие (элемент прокрутится в область видимости, данные загрузятся и т. д.).
Это свойство является одним из свойств анимации CSS3 и входит в сокращённое свойство animation вместе с animation-name, animation-duration и animation-iteration-count.
Несколько анимаций
Когда вы назначаете элементу несколько анимаций, разделённых запятыми, каждое значение animation-play-state соответствует по порядку анимации на той же позиции в animation-name. Например, animation-play-state: paused, running ставит первую анимацию на паузу, а вторую запускает. Если состояний указано меньше, чем имён, значения повторяются для оставшихся.
| Начальное значение | running |
|---|---|
| Применяется к | Всем элементам. Также применяется к псевдоэлементам ::before и ::after. |
| Наследуется | Нет. |
| Анимируется | Нет. |
| Версия | CSS3 |
| DOM Syntax | object.style.animationPlayState = "paused"; |
Синтаксис
animation-play-state: paused | running | initial | inherit;Примеры
Значение "running"
running является значением по умолчанию, поэтому данный пример ведёт себя одинаково независимо от наличия этого объявления — блок скользит один раз за 10 секунд:
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 150px;
height: 150px;
background: #ccc;
position: relative;
animation: play 10s;
animation-play-state: running;
}
@keyframes play {
from {
left: 0px;
}
to {
left: 200px;
}
}
</style>
</head>
<body>
<h2>Animation-play-state example</h2>
<p>Here the animation-play-state is set to "running".</p>
<div></div>
</body>
</html>Пауза при наведении со значением "paused"
Здесь зацикленная анимация ставится на паузу, когда курсор находится над блоком. Поскольку пауза сохраняет текущий прогресс, блок замирает на месте и продолжает движение с той же точки, когда вы убираете курсор:
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 150px;
height: 150px;
background: #8ebf42;
position: relative;
animation: play 1s infinite;
}
div:hover {
animation-play-state: paused;
}
@keyframes play {
from {
left: 0px;
}
to {
left: 200px;
}
}
</style>
</head>
<body>
<p>Hover over the green box to stop the animation.</p>
<div></div>
</body>
</html>Переключение воспроизведения/паузы через JavaScript
Вы можете читать и задавать значение из скрипта через свойство animationPlayState объекта style элемента. Именно так работает кнопка воспроизведения/паузы:
<!DOCTYPE html>
<html>
<head>
<style>
#box {
width: 150px;
height: 150px;
background: #8ebf42;
position: relative;
animation: play 1s infinite;
animation-play-state: paused;
}
@keyframes play {
from { left: 0px; }
to { left: 200px; }
}
</style>
</head>
<body>
<button id="toggle">Play</button>
<div id="box"></div>
<script>
const box = document.getElementById("box");
const button = document.getElementById("toggle");
button.addEventListener("click", () => {
const paused =
getComputedStyle(box).animationPlayState === "paused";
box.style.animationPlayState = paused ? "running" : "paused";
button.textContent = paused ? "Pause" : "Play";
});
</script>
</body>
</html>Анимация начинается в состоянии paused, поэтому ничего не движется до тех пор, пока пользователь не нажмёт кнопку. Каждый щелчок переключает состояние и обновляет подпись кнопки.
Значения
Свойство принимает одно ключевое слово (или список через запятую — по одному на каждую анимацию):
| Значение | Описание | Попробовать |
|---|---|---|
| running | Значение по умолчанию, когда анимация воспроизводится. | Попробовать » |
| paused | Анимация поставлена на паузу. | Попробовать » |
| initial | Устанавливает свойство в значение по умолчанию (running). | |
| inherit | Наследует свойство от родительского элемента. |
Поддержка браузерами
animation-play-state поддерживается во всех современных браузерах — Chrome, Edge, Firefox, Safari и Opera. Свойство не анимируется, поэтому его изменение вступает в силу немедленно, без перехода между состояниями.