Proprietà animation-fill-mode
La proprietà animation-fill-mode imposta
in quale posizione si fermano le animazioni
dopo la fine. Per impostazione predefinita l'animazione ritorna
al valore iniziale e questo potrebbe non sembrare
molto bello.
Sintassi
selettore {
animation-fill-mode: backwards | forwards | both | none;
}
Valori
| Valore | Descrizione |
|---|---|
none |
Se è impostato un ritardo dell'animazione - durante il tempo di ritardo
l'elemento rimarrà al suo posto, e poi salterà al fotogramma 0%.
Dopo la fine dell'animazione l'elemento non rimarrà nello stato
in cui si è fermato, ma salterà allo stato iniziale.
|
backwards |
Forza l'elemento a muoversi dopo il caricamento della pagina verso il fotogramma 0%,
anche se è impostato un ritardo
animation-delay,
e a rimanere lì, finché non inizia l'animazione.
Dopo la fine dell'animazione l'elemento
non rimarrà nello stato in cui si è fermato,
ma salterà allo stato iniziale.
|
forwards |
Indica al browser che dopo la fine dell'animazione l'elemento rimarrà nello stato in cui si è fermato. |
both |
Include backwards e forwards - dopo il caricamento
della pagina l'elemento si imposterà sul fotogramma 0%, e dopo
la fine dell'animazione l'elemento rimarrà dove si è fermato.
|
Valore predefinito: none.
Esempio . Valore none
In questo esempio margin-left
è impostato al valore 300px per l'elemento,
e per il primo fotogramma dell'animazione - a 0px.
Poiché non c'è ritardo animation-delay,
l'elemento dopo il caricamento della pagina si posizionerà
a 0px, e non a 300px. Inoltre
l'animazione dopo la fine salterà
al valore iniziale:
<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;
}
:
Esempio . Valore none
In questo esempio margin-left
è impostato al valore 300px per l'elemento,
e per il primo fotogramma dell'animazione - a 0px.
Inoltre per l'elemento è impostato un ritardo animation-delay
di 3 secondi, quindi l'elemento dopo
il caricamento della pagina si posizionerà a 300px,
e non a 0px, e rimarrà lì per 3
secondi dopo l'inizio dell'animazione e poi salterà
a 0px - e l'animazione inizierà da lì.
Inoltre, l'animazione dopo la fine
salterà al valore iniziale:
<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;
}
:
Esempio . Valore backwards
In questo esempio margin-left
è impostato al valore 300px per l'elemento,
e per il primo fotogramma dell'animazione - a 0px.
Inoltre per l'elemento è impostato animation-fill-mode
al valore backwards, quindi l'elemento
dopo il caricamento della pagina si posizionerà a 0px,
e non a 300px, come avveniva per animation-fill-mode
al valore none. Inoltre, l'animazione dopo
la fine salterà al valore iniziale:
<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;
}
:
Esempio . Valore none e numero di ripetizioni uguale a 1
In questo esempio margin-left
è impostato al valore 300px per l'elemento,
e per il primo fotogramma dell'animazione - a 0px.
Inoltre per l'elemento è impostato un ritardo animation-delay
di 3 secondi, quindi l'elemento dopo
il caricamento della pagina si posizionerà a 300px,
e non a 0px, e rimarrà lì per 3
secondi dopo l'inizio dell'animazione e poi salterà
a 0px - e l'animazione inizierà da lì.
Poiché animation-fill-mode è impostato
al valore none, dopo la riproduzione dell'animazione
l'elemento tornerà al valore iniziale:
<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;
}
:
Esempio . Valore forwards e numero di ripetizioni uguale a 1
In questo esempio animation-fill-mode
è impostato al valore forwards, e
il numero
di ripetizioni dell'animazione - a 1. Dopo
la riproduzione dell'animazione l'elemento rimarrà nella
posizione in cui è finita l'animazione,
e non salterà al punto di partenza.
Inoltre, margin-left è impostato
al valore 300px per l'elemento, e per
il primo fotogramma dell'animazione - a 0px. Inoltre
per l'elemento è impostato un ritardo animation-delay
di 3 secondi, quindi l'elemento dopo
il caricamento della pagina si posizionerà a 300px,
e non a 0px, e rimarrà lì per 3
secondi dopo l'inizio dell'animazione, e poi salterà
a 0px - e l'animazione inizierà da lì:
<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;
}
:
Esempio . Valore both e numero di ripetizioni uguale a 1
In questo esempio animation-fill-mode
è impostato al valore both, e il numero
di ripetizioni dell'animazione - a 1. Dopo
il caricamento della pagina l'elemento si posizionerà nel
primo fotogramma dell'animazione (a 0px, e non
a 300px), e dopo la riproduzione dell'animazione l'elemento
rimarrà nella posizione in cui è finita
l'animazione, e non salterà al punto di partenza:
<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;
}
:
Vedi anche
-
la proprietà
animation-name,
che imposta il nome dell'animazione -
la proprietà
animation-duration,
che imposta la durata dell'animazione -
la proprietà
animation-delay,
che imposta il ritardo prima dell'esecuzione dell'animazione -
la proprietà
animation-timing-function,
che imposta la velocità di esecuzione dell'animazione -
la proprietà
animation-iteration-count,
che imposta il numero di iterazioni dell'animazione -
la proprietà
animation-direction,
che imposta la direzione dell'animazione -
la proprietà
animation-play-state,
che permette di mettere in pausa l'animazione -
la proprietà
animation,
che rappresenta una forma abbreviata per le animazioni -
il comando
@keyframes,
che imposta i fotogrammi chiave dell'animazione -
le transizioni fluide
transition, che rappresentano un'animazione al passaggio del mouse sull'elemento