Свойство animation-fill-mode
Свойството animation-fill-mode задава
в какво положение да спре анимацията
след приключване. По подразбиране анимацията се връща
в първоначалната стойност и това може да изглежда
не много красиво.
Синтаксис
селектор {
animation-fill-mode: backwards | forwards | both | none;
}
Стойности
| Стойност | Описание |
|---|---|
none |
Ако е зададено забавяне на анимацията - то през времето на забавянето
елементът ще остава на място, а след това със скок ще премине към 0% кадър.
След приключване на анимацията елементът няма да остане в състоянието,
в което е спрял, а ще прескочи в началното състояние.
|
backwards |
Кара елемента да се придвижи след зареждане на страницата към 0% кадър,
дори ако е зададено забавяне
animation-delay,
и да остане там, докато не започне анимацията.
След приключване на анимацията елементът
няма да остане в състоянието, в което е спрял,
а ще прескочи в началното състояние.
|
forwards |
Указва на браузъра, че след приключване на анимацията елементът ще остане в състоянието, в което е спрял. |
both |
Включва в себе си backwards и forwards - след зареждане
на страницата елементът ще се установи към 0% кадър, а след
приключване на анимацията елементът ще остане там, където е спрял.
|
Стойност по подразбиране: none.
Пример . Стойност none
В този пример margin-left
е зададен в стойност 300px за елемента,
а за първия кадър на анимацията - в 0px.
Тъй като няма забавяне animation-delay,
то елементът след зареждане на страницата ще се постави
в 0px, а не в 300px. Освен
това, анимацията след приключване ще прескача
в началната стойност:
<div id="elem"></div>
@keyframes move {
from {
margin-left: 0;
}
to {
margin-left: 400px;
}
}
#elem {
margin-left: 300px;
animation-fill-mode: none;
animation-delay: 0s;
animation-duration: 3s;
animation-name: move;
animation-iteration-count: infinite;
animation-timing-function: linear;
border: 1px solid black;
width: 50px;
height: 50px;
}
:
Пример . Стойност none
В този пример margin-left
е зададен в стойност 300px за елемента,
а за първия кадър на анимацията - в 0px.
Също за елемента е зададено забавяне animation-delay
в 3 секунди, затова елементът след
зареждане на страницата ще се постави в 300px,
а не в 0px, и ще стои там 3
секунди след началото на анимацията, а след това със скок
ще премине към 0px - и анимацията ще започне оттам.
Освен това, анимацията след приключване ще
прескача в началната стойност:
<div id="elem"></div>
@keyframes move {
from {
margin-left: 0;
}
to {
margin-left: 400px;
}
}
#elem {
margin-left: 300px;
animation-fill-mode: none;
animation-delay: 0s;
animation-duration: 3s;
animation-name: move;
animation-iteration-count: infinite;
animation-timing-function: linear;
border: 1px solid black;
width: 50px;
height: 50px;
}
:
Пример . Стойност backwards
В този пример margin-left
е зададен в стойност 300px за елемента,
а за първия кадър на анимацията - в 0px.
Също за елемента е зададен animation-fill-mode
в стойност backwards, затова елементът
след зареждане на страницата ще се постави в 0px,
а не в 300px, както беше за animation-fill-mode
в стойност none. Освен това, анимацията след
приключване ще прескача в началната
стойност:
<div id="elem"></div>
@keyframes move {
from {
margin-left: 0;
}
to {
margin-left: 400px;
}
}
#elem {
margin-left: 300px;
animation-fill-mode: backwards;
animation-delay: 0s;
animation-duration: 3s;
animation-name: move;
animation-iteration-count: infinite;
animation-timing-function: linear;
border: 1px solid black;
width: 50px;
height: 50px;
}
:
Пример . Стойност none и брой повторения равен на 1
В този пример margin-left
е зададен в стойност 300px за елемента,
а за първия кадър на анимацията - в 0px.
Също за елемента е зададено забавяне animation-delay
в 3 секунди, затова елементът след
зареждане на страницата ще се постави в 300px,
а не в 0px, и ще стои там 3
секунди след началото на анимацията, а след това със скок
ще премине към 0px - и анимацията ще започне оттам.
Тъй като animation-fill-mode е зададен
в стойност none, то след възпроизвеждане на анимацията
елементът ще се върне в началната стойност:
<div id="elem"></div>
@keyframes move {
from {
margin-left: 0;
}
to {
margin-left: 400px;
}
}
#elem {
margin-left: 300px;
animation-fill-mode: none;
animation-delay: 3s;
animation-duration: 3s;
animation-name: move;
animation-iteration-count: 1;
animation-timing-function: linear;
border: 1px solid black;
width: 50px;
height: 50px;
}
:
Пример . Стойност forwards и брой повторения равен на 1
В този пример animation-fill-mode
е зададен в стойност forwards, а
броят
на повторенията на анимацията - в 1. След
възпроизвеждане на анимацията елементът ще остане в
това положение, където е приключила анимацията,
а няма да прескочи в началната точка.
Освен това, margin-left е зададен
в стойност 300px за елемента, а за
първия кадър на анимацията - в 0px. Също
за елемента е зададено забавяне animation-delay
в 3 секунди, затова елементът след
зареждане на страницата ще се постави в 300px,
а не в 0px, и ще стои там 3
секунди след началото на анимацията, а след това със скок
ще премине към 0px - и анимацията ще започне оттам:
<div id="elem"></div>
@keyframes move {
from {
margin-left: 0;
}
to {
margin-left: 400px;
}
}
#elem {
margin-left: 300px;
animation-fill-mode: forwards;
animation-delay: 3s;
animation-duration: 3s;
animation-name: move;
animation-iteration-count: 1;
animation-timing-function: linear;
border: 1px solid black;
width: 50px;
height: 50px;
}
:
Пример . Стойност both и брой повторения равен на 1
В този пример animation-fill-mode
е зададен в стойност both, а броят
на повторенията на анимацията - в 1. След
зареждане на страницата елементът ще стои в
първия кадър на анимацията (в 0px, а не
в 300px), а след възпроизвеждане на анимацията елементът
ще остане в това положение, където е приключила
анимацията, а няма да прескочи в началната точка:
<div id="elem"></div>
@keyframes move {
from {
margin-left: 0;
}
to {
margin-left: 400px;
}
}
#elem {
margin-left: 300px;
animation-fill-mode: both;
animation-delay: 3s;
animation-duration: 3s;
animation-name: move;
animation-iteration-count: 1;
animation-timing-function: linear;
border: 1px solid black;
width: 50px;
height: 50px;
}
:
Вижте също
-
свойство
animation-name,
което задава име на анимацията -
свойство
animation-duration,
което задава продължителност на анимацията -
свойство
animation-delay,
което задава забавяне преди изпълнение на анимацията -
свойство
animation-timing-function,
което задава скорост на изпълнение на анимацията -
свойство
animation-iteration-count,
което задава брой итерации на анимацията -
свойство
animation-direction,
което задава посока на анимацията -
свойство
animation-play-state,
което позволява спиране на анимацията на пауза -
свойство
animation,
представляващо съкращение за анимации -
команда
@keyframes,
задаваща ключови кадри на анимацията -
плавни преходи
transition, представляващи анимация при посочване на елемент