Свойство CSS `animation-fill-mode`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с сентября 2015 года.
Свойство animation-fill-mode CSS задаёт, как CSS-анимация применяет стили к целевому элементу до и после выполнения.
Часто удобно использовать сокращённое свойство animation, чтобы задать все свойства анимации одновременно.
Попробуйте
animation-fill-mode: none; animation-delay: 1s;
animation-fill-mode: forwards; animation-delay: 1s;
animation-fill-mode: backwards; animation-delay: 1s;
animation-fill-mode: both; animation-delay: 1s;
<section class="flex-column" id="default-example"> <div>Animation <span id="play-status"></span></div> <div id="example-element">Select a mode 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: slide 1s ease-in 1;
}
@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-fill-mode: none; animation-fill-mode: forwards; animation-fill-mode: backwards; animation-fill-mode: both; /* Multiple animations */ animation-fill-mode: none, backwards; animation-fill-mode: both, forwards, none; /* Global values */ animation-fill-mode: inherit; animation-fill-mode: initial; animation-fill-mode: revert; animation-fill-mode: revert-layer; animation-fill-mode: unset;
Значения
Это свойство задаётся списком следующих ключевых слов, разделённых запятыми:
-
none - Анимация не будет применять стили к целевому элементу, когда она не выполняется. Вместо этого элемент будет отображаться с применением других правил CSS, заданных для него. Это значение по умолчанию.
-
forwards -
Целевой элемент сохранит вычисленные значения, заданные последним ключевым кадром, достигнутым во время выполнения. Последний ключевой кадр зависит от значений свойств
animation-directionиanimation-iteration-count:animation-directionanimation-iteration-countпоследний достигнутый ключевой кадр normalчётное или нечётное 100%илиtoreverseчётное или нечётное 0%илиfromalternateчётное 0%илиfromalternateнечётное 100%илиtoalternate-reverseчётное 100%илиtoalternate-reverseнечётное 0%илиfromАнимированные свойства ведут себя так, как если бы они были включены в заданное значение свойства
will-change. Если во время анимации был создан новый контекст наложения, целевой элемент сохраняет его после завершения анимации. -
backwards -
Как только анимация применяется к целевому элементу, она применяет значения, заданные в первом соответствующем ключевом кадре, и сохраняет их в течение периода
animation-delay. Первый соответствующий ключевой кадр зависит от значения свойстваanimation-direction:animation-directionпервый соответствующий ключевой кадр normalилиalternate0%илиfromreverseилиalternate-reverse100%илиto -
both - Анимация будет следовать правилам для обоих вариантов — вперёд и назад, тем самым продлевая действие свойств анимации в обоих направлениях.
Примечание: Если для свойства animation-* указать несколько значений через запятую, они будут применены к анимациям в том порядке, в котором указаны имена animation-name. Сведения о ситуациях, когда количество анимаций не совпадает с количеством значений свойства animation-*, см. в разделе Задание нескольких значений свойств анимации.
Примечание: animation-fill-mode действует при создании прокручиваемых CSS-анимаций так же, как и при создании обычных анимаций, основанных на времени.
Формальное определение
| Начальное значение | none |
|---|---|
| Применяется к | всем элементам, ::before и ::after <a href="/en-US/docs/Web/CSS/Reference/Selectors/Pseudo-elements">псевдоэлементам</a> |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | Не анимируется |
Формальный синтаксис
animation-fill-mode = <single-animation-fill-mode># <single-animation-fill-mode> = none | forwards | backwards | both
Примеры
Задание режима заливки
Эффект animation-fill-mode показан в следующем примере. В нём демонстрируется, как можно сохранить анимацию в её конечном состоянии, а не возвращать её к исходному состоянию (которое используется по умолчанию).
HTML
<p>Move your mouse over the gray box!</p> <div class="demo"> <div class="grows-and-stays">This grows and stays big.</div> <div class="grows">This just grows.</div> </div>
CSS
.demo {
border-top: 100px solid #cccccc;
height: 300px;
}
@keyframes grow {
0% {
font-size: 0;
}
100% {
font-size: 40px;
}
}
.demo:hover .grows {
animation-name: grow;
animation-duration: 3s;
}
.demo:hover .grows-and-stays {
animation-name: grow;
animation-duration: 3s;
animation-fill-mode: forwards;
}
Результат
Другие примеры см. в разделе CSS-анимации.
Спецификации
| Спецификация |
|---|
| CSS Animations Level 1 # animation-fill-mode |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
animation-fill-mode |
43
3
|
12
12
|
16
49
5
|
30
15
12.1–15
12–15
|
9
5
|
43
18
|
16
49
5
|
30
14
12.1–14
12–14
|
9
4
|
4.0
1.0
|
43
4.4
|
9
4
|
backwards |
3 |
12 |
5 |
15 |
5 |
18 |
5 |
14 |
4.2 |
1.0 |
4.4 |
4.2 |
both |
3 |
12 |
5 |
15 |
5 |
18 |
5 |
14 |
4.2 |
1.0 |
4.4 |
4.2 |
forwards |
3 |
12 |
5 |
15 |
5 |
18 |
5 |
14 |
4.2 |
1.0 |
4.4 |
4.2 |
none |
3 |
12 |
5 |
15 |
5 |
18 |
5 |
14 |
4.2 |
1.0 |
4.4 |
4.2 |
См. также
- Использование CSS-анимаций
- API
AnimationEventв JavaScript - Другие связанные свойства анимации:
animation,animation-composition,animation-delay,animation-direction,animation-duration,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-fill-mode