Свойство CSS `animation-delay`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она поддерживается браузерами с сентября 2015 года.
Свойство animation-delay CSS задаёт время ожидания после применения анимации к элементу и до её начала. Анимация может начаться позже, немедленно с самого начала или немедленно с некоторого момента её выполнения.
Часто удобно использовать сокращённое свойство animation, чтобы задать все свойства анимации одновременно.
Попробуйте
animation-delay: 250ms;
animation-delay: 2s;
animation-delay: -2s;
<section class="flex-column" id="default-example"> <div>Animation <span id="play-status"></span></div> <div id="example-element">Select a delay to start!</div> </section>
#example-element {
background-color: #1766aa;
color: white;
margin: auto;
margin-left: 0;
border: 5px solid #333333;
width: 150px;
height: 150px;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#play-status {
font-weight: bold;
}
.animating {
animation-name: slide;
animation-duration: 3s;
animation-timing-function: ease-in;
animation-iteration-count: 2;
animation-direction: alternate;
}
@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 status = document.getElementById("play-status");
function update() {
status.textContent = "delaying";
el.className = "";
window.requestAnimationFrame(() => {
window.requestAnimationFrame(() => {
el.className = "animating";
});
});
}
el.addEventListener("animationstart", () => {
status.textContent = "playing";
});
el.addEventListener("animationend", () => {
status.textContent = "finished";
});
const observer = new MutationObserver(() => {
update();
});
observer.observe(el, {
attributes: true,
attributeFilter: ["style"],
});
update();
Синтаксис
/* Single animation */ animation-delay: 3s; animation-delay: 0s; animation-delay: -1500ms; /* Multiple animations */ animation-delay: 2.1s, 480ms; /* Global values */ animation-delay: inherit; animation-delay: initial; animation-delay: revert; animation-delay: revert-layer; animation-delay: unset;
Значения
Это свойство задаётся списком значений <time>, разделённых запятыми:
-
<time> -
Смещение времени от момента применения анимации к элементу, по истечении которого должна начаться анимация. Значение можно указывать в секундах (
s) или миллисекундах (ms). Единица измерения обязательна.Положительное значение указывает, что анимация должна начаться после истечения указанного времени. Значение
0s, используемое по умолчанию, означает, что анимация должна начаться сразу после применения.Отрицательное значение приводит к немедленному запуску анимации, но не с начала цикла. Например, если указать
-1sв качестве задержки анимации, она начнётся немедленно, но с момента, соответствующего 1 секунде от начала последовательности анимации. Если для задержки анимации указано отрицательное значение, но начальное значение задано неявно, начальное значение берётся на момент применения анимации к элементу.
Примечание: Если для свойства animation-* указано несколько значений, разделённых запятыми, они применяются к анимациям в том порядке, в котором появляются соответствующие значения animation-name. О том, что происходит, когда число анимаций и значений свойства animation-* не совпадает, см. в разделе Задание нескольких значений свойств анимации.
Примечание: animation-delay не влияет на анимации CSS, управляемые прокруткой.
Формальное определение
| Начальное значение | 0s |
|---|---|
| Применяется к | всем элементам, ::before и ::after <a href="/en-US/docs/Web/CSS/Reference/Selectors/Pseudo-elements">псевдоэлементам</a> |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | Не анимируется |
Формальный синтаксис
animation-delay =
<time>#
Примеры
Задание задержки анимации
Для этой анимации задана задержка в 2 секунды.
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-delay: 2s;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
Результат
Наведите указатель на прямоугольник, чтобы запустить анимацию.
Примеры см. в разделе Анимации CSS.
Спецификации
| Спецификация |
|---|
| CSS Animations Level 1 # animation-delay |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
animation-delay |
43
3
|
12
12
|
16До Firefox 57 Firefox не перерисовывает элементы за пределами области просмотра, которые с задержкой анимируются в эту область. Эта ошибка затрагивает только некоторые платформы, например Windows.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
|
См. также
- Использование анимаций CSS
- API JavaScript
AnimationEvent - Другие связанные свойства анимации:
animation,animation-composition,animation-direction,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-delay