Właściwość animation-fill-mode
Właściwość animation-fill-mode ustawia
w jakiej pozycji zatrzymywać animacje
po zakończeniu. Domyślnie animacja wraca
do wartości początkowej i to może wyglądać
niezbyt ładnie.
Składnia
selektor {
animation-fill-mode: backwards | forwards | both | none;
}
Wartości
| Wartość | Opis |
|---|---|
none |
Jeśli ustawiono opóźnienie animacji - to w czasie trwania opóźnienia
element pozostanie na miejscu, a potem skokiem przejdzie do 0% klatki.
Po zakończeniu animacji element nie pozostanie w tym stanie,
gdzie się zatrzymał, a przeskoczy do stanu początkowego.
|
backwards |
Wymusza na elemencie ruch po załadowaniu strony do 0% klatki,
nawet jeśli ustawiono opóźnienie
animation-delay,
i pozostanie tam, aż nie rozpocznie się animacja.
Po zakończeniu animacji element
nie pozostanie w tym stanie, gdzie się zatrzymał,
a przeskoczy do stanu początkowego.
|
forwards |
Wskazuje przeglądarce, że po zakończeniu animacji element pozostanie w tym stanie, gdzie się zatrzymał. |
both |
Zawiera w sobie backwards i forwards - po załadowaniu
strony element ustawi się do 0% klatki, a po
zakończeniu animacji element pozostanie tam, gdzie się zatrzymał.
|
Wartość domyślna: none.
Przykład . Wartość none
W tym przykładzie margin-left
ustawiono na wartość 300px dla elementu,
a dla pierwszej klatki animacji - na 0px.
Ponieważ nie ma opóźnienia animation-delay,
to element po załadowaniu strony stanie
w 0px, a nie w 300px. Oprócz
tego, animacja po zakończeniu będzie przeskakiwać
do wartości początkowej:
<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;
}
:
Przykład . Wartość none
W tym przykładzie margin-left
ustawiono na wartość 300px dla elementu,
a dla pierwszej klatki animacji - na 0px.
Również dla elementu ustawiono opóźnienie animation-delay
na 3 sekundy, dlatego element po
załadowaniu strony stanie w 300px,
a nie w 0px, i będzie stać tam 3
sekundy po rozpoczęciu animacji a potem skokiem
przejdzie do 0px - i animacja rozpocznie się stamtąd.
Oprócz tego, animacja po zakończeniu będzie
przeskakiwać do wartości początkowej:
<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;
}
:
Przykład . Wartość backwards
W tym przykładzie margin-left
ustawiono na wartość 300px dla elementu,
a dla pierwszej klatki animacji - na 0px.
Również dla elementu ustawiono animation-fill-mode
na wartości backwards, dlatego element
po załadowaniu strony stanie w 0px,
a nie w 300px, jak to było dla animation-fill-mode
na wartości none. Oprócz tego, animacja po
zakończeniu będzie przeskakiwać do wartości początkowej:
<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;
}
:
Przykład . Wartość none i liczba powtórzeń równa 1
W tym przykładzie margin-left
ustawiono na wartość 300px dla elementu,
a dla pierwszej klatki animacji - na 0px.
Również dla elementu ustawiono opóźnienie animation-delay
na 3 sekundy, dlatego element po
załadowaniu strony stanie w 300px,
a nie w 0px, i będzie stać tam 3
sekundy po rozpoczęciu animacji a potem skokiem
przejdzie do 0px - i animacja rozpocznie się stamtąd.
Ponieważ animation-fill-mode ustawiono
na wartości none, to po odtworzeniu animacji
element wróci do wartości początkowej:
<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;
}
:
Przykład . Wartość forwards i liczba powtórzeń równa 1
W tym przykładzie animation-fill-mode
ustawiono na wartości forwards, a
liczba
powtórzeń animacji - na 1. Po
odtworzeniu animacji element pozostanie w
tej pozycji, gdzie zakończyła się animacja,
a nie skoczy do punktu wyjścia.
Oprócz tego, margin-left ustawiono
na wartość 300px dla elementu, a dla
pierwszej klatki animacji - na 0px. Również
dla elementu ustawiono opóźnienie animation-delay
na 3 sekundy, dlatego element po
załadowaniu strony stanie w 300px,
a nie w 0px, i będzie stać tam 3
sekundy po rozpoczęciu animacji, a potem skokiem
przejdzie do 0px - i animacja rozpocznie się stamtąd:
<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;
}
:
Przykład . Wartość both i liczba powtórzeń równa 1
W tym przykładzie animation-fill-mode
ustawiono na wartości both, a liczba
powtórzeń animacji - na 1. Po
załadowaniu strony element będzie stać w
pierwszej klatce animacji (w 0px, a nie
w 300px), a po odtworzeniu animacji element
pozostanie w tej pozycji, gdzie zakończyła się
animacja, a nie skoczy do punktu wyjścia:
<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;
}
:
Zobacz też
-
właściwość
animation-name,
która ustawia nazwę animacji -
właściwość
animation-duration,
która ustawia czas trwania animacji -
właściwość
animation-delay,
która ustawia opóźnienie przed wykonaniem animacji -
właściwość
animation-timing-function,
która ustawia prędkość wykonania animacji -
właściwość
animation-iteration-count,
która ustawia liczbę iteracji animacji -
właściwość
animation-direction,
która ustawia kierunek animacji -
właściwość
animation-play-state,
która pozwala zatrzymać animację na pauzie -
właściwość
animation,
reprezentująca skrót dla animacji -
polecenie
@keyframes,
ustawiające klatki kluczowe animacji -
płynne przejścia
transition, reprezentujące animację po najechaniu na element