Proprietatea animation-fill-mode
Proprietatea animation-fill-mode stabilește
în ce poziție se oprește animația
după finalizare. În mod implicit, animația revine
la valoarea inițială și acest lucru poate arăta
nu foarte frumos.
Sintaxă
selector {
animation-fill-mode: backwards | forwards | both | none;
}
Valori
| Valoare | Descriere |
|---|---|
none |
Dacă este stabilită o întârziere a animației - atunci în timpul întârzierii
elementul va rămâne pe loc, apoi va sări la cadrul 0%.
După finalizarea animației elementul nu va rămâne în starea
în care s-a oprit, ci va sări în starea inițială.
|
backwards |
Forțează elementul să se miște după încărcarea paginii către cadrul 0%,
chiar dacă este stabilită o întârziere
animation-delay,
și să rămână acolo, până când nu începe animația.
După finalizarea animației elementul
nu va rămâne în starea în care s-a oprit,
ci va sări în starea inițială.
|
forwards |
Indică browserului că după finalizarea animației elementul va rămâne în starea în care s-a oprit. |
both |
Include atât backwards cât și forwards - după încărcarea
paginii elementul se va stabili la cadrul 0%, iar după
finalizarea animației elementul va rămâne acolo unde s-a oprit.
|
Valoare implicită: none.
Exemplu . Valoarea none
În acest exemplu margin-left
este stabilit la valoarea 300px pentru element,
iar pentru primul cadru al animației - la 0px.
Deoarece nu există întârziere animation-delay,
elementul după încărcarea paginii se va poziționa
la 0px, și nu la 300px. În plus
aceasta, animația după finalizare va sări
la valoarea inițială:
<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;
}
:
Exemplu . Valoarea none
În acest exemplu margin-left
este stabilit la valoarea 300px pentru element,
iar pentru primul cadru al animației - la 0px.
De asemenea, pentru element este stabilită o întârziere animation-delay
de 3 secunde, de aceea elementul după
încărcarea paginii se va poziționa la 300px,
și nu la 0px, și va sta acolo 3
secunde după care va sări
la 0px - și animația va începe de acolo.
În plus, animația după finalizare va
sări la valoarea inițială:
<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;
}
:
Exemplu . Valoarea backwards
În acest exemplu margin-left
este stabilit la valoarea 300px pentru element,
iar pentru primul cadru al animației - la 0px.
De asemenea, pentru element este stabilit animation-fill-mode
cu valoarea backwards, de aceea elementul
după încărcarea paginii se va poziționa la 0px,
și nu la 300px, așa cum era pentru animation-fill-mode
cu valoarea none. În plus, animația după
finalizare va sări la valoarea inițială:
<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;
}
:
Exemplu . Valoarea none și numărul de repetări egal cu 1
În acest exemplu margin-left
este stabilit la valoarea 300px pentru element,
iar pentru primul cadru al animației - la 0px.
De asemenea, pentru element este stabilită o întârziere animation-delay
de 3 secunde, de aceea elementul după
încărcarea paginii se va poziționa la 300px,
și nu la 0px, și va sta acolo 3
secunde după care va sări
la 0px - și animația va începe de acolo.
Deoarece animation-fill-mode este stabilit
cu valoarea none, după redarea animației
elementul se va întoarce la valoarea inițială:
<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;
}
:
Exemplu . Valoarea forwards și numărul de repetări egal cu 1
În acest exemplu animation-fill-mode
este stabilit cu valoarea forwards, iar
numărul
de repetări al animației - la 1. După
redarea animației elementul va rămâne în
poziția în care s-a terminat animația,
și nu va sări în punctul de plecare.
În plus, margin-left este stabilit
la valoarea 300px pentru element, iar pentru
primul cadru al animației - la 0px. De asemenea
pentru element este stabilită o întârziere animation-delay
de 3 secunde, de aceea elementul după
încărcarea paginii se va poziționa la 300px,
și nu la 0px, și va sta acolo 3
secunde după care va sări
la 0px - și animația va începe de acolo:
<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;
}
:
Exemplu . Valoarea both și numărul de repetări egal cu 1
În acest exemplu animation-fill-mode
este stabilit cu valoarea both, iar numărul
de repetări al animației - la 1. După
încărcarea paginii elementul va sta în
primul cadru al animației (la 0px, și nu
la 300px), iar după redarea animației elementul
va rămâne în poziția în care s-a terminat
animația, și nu va sări în punctul de plecare:
<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;
}
:
Vezi și
-
proprietatea
animation-name,
care stabilește numele animației -
proprietatea
animation-duration,
care stabilește durata animației -
proprietatea
animation-delay,
care stabilește întârzierea înainte de executarea animației -
proprietatea
animation-timing-function,
care stabilește viteza de executare a animației -
proprietatea
animation-iteration-count,
care stabilește numărul de iterații al animației -
proprietatea
animation-direction,
care stabilește direcția animației -
proprietatea
animation-play-state,
care permite punerea animației pe pauză -
proprietatea
animation,
reprezentând o prescurtare pentru animații -
comanda
@keyframes,
care stabilește cadrele cheie ale animației -
tranziții line
transition, reprezentând o animație la trecerea cursorului peste element