Egenskapen animation-fill-mode
Egenskapen animation-fill-mode sätter
i vilket läge animationer ska stanna
efter avslut. Som standard återgår animationen
till ursprungligt värde och det kan se
inte särskilt snyggt ut.
Syntax
selektor {
animation-fill-mode: backwards | forwards | both | none;
}
Värden
| Värde | Beskrivning |
|---|---|
none |
Om animationsfördröjning är satt - så under fördröjningstiden
kommer elementet att stanna kvar på plats, och sedan hoppa till 0% keyframe.
Efter att animationen avslutats kommer elementet inte att stanna kvar i det tillståndet,
där den stannade, utan hoppa tillbaka till starttillståndet.
|
backwards |
Tvingar elementet att efter sidladdning gå till 0% keyframe,
även om fördröjning är satt
animation-delay,
och stanna kvar där tills animationen börjar.
Efter att animationen avslutats kommer elementet
inte att stanna kvar i det tillståndet, där den stannade,
utan hoppa tillbaka till starttillståndet.
|
forwards |
Anger till webbläsaren att efter avslutad animation ska elementet stanna kvar i det tillståndet, där den stannade. |
both |
Inkluderar både backwards och forwards - efter sidladdning
kommer elementet att sättas till 0% keyframe, och efter
avslutad animation kommer elementet att stanna kvar där, där den stannade.
|
Standardvärde: none.
Exempel . Värdet none
I detta exempel är margin-left
satt till värdet 300px för elementet,
och för första keyframe i animationen - till 0px.
Eftersom det inte finns någon fördröjning animation-delay,
så kommer elementet efter sidladdning att ställa sig
i 0px, och inte i 300px. Utöver
det kommer animationen efter avslut att hoppa tillbaka
till startvärdet:
<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;
}
:
Exempel . Värdet none
I detta exempel är margin-left
satt till värdet 300px för elementet,
och för första keyframe i animationen - till 0px.
Även för elementet är fördröjning animation-delay
satt till 3 sekunder, därför kommer elementet efter
sidladdning att ställa sig i 300px,
och inte i 0px, och kommer att stå där 3
sekunder efter animationens start och sedan hoppa
till 0px - och animationen startar därifrån.
Utöver det kommer animationen efter avslut att
hoppa tillbaka till startvärdet:
<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;
}
:
Exempel . Värdet backwards
I detta exempel är margin-left
satt till värdet 300px för elementet,
och för första keyframe i animationen - till 0px.
Även för elementet är animation-fill-mode
satt till värdet backwards, därför kommer elementet
efter sidladdning att ställa sig i 0px,
och inte i 300px, som det var för animation-fill-mode
i värdet none. Utöver det kommer animationen efter
avslut att hoppa tillbaka till startvärdet:
<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;
}
:
Exempel . Värdet none och antal upprepningar lika med 1
I detta exempel är margin-left
satt till värdet 300px för elementet,
och för första keyframe i animationen - till 0px.
Även för elementet är fördröjning animation-delay
satt till 3 sekunder, därför kommer elementet efter
sidladdning att ställa sig i 300px,
och inte i 0px, och kommer att stå där 3
sekunder efter animationens start och sedan hoppa
till 0px - och animationen startar därifrån.
Eftersom animation-fill-mode är satt
till värdet none, så efter att animationen spelats upp
kommer elementet att återgå till startvärdet:
<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;
}
:
Exempel . Värdet forwards och antal upprepningar lika med 1
I detta exempel är animation-fill-mode
satt till värdet forwards, och
antalet
upprepningar av animationen - till 1. Efter
att animationen spelats upp kommer elementet att stanna kvar i
det läget, där animationen slutade,
och inte hoppa tillbaka till startpunkten.
Utöver det är margin-left satt
till värdet 300px för elementet, och för
första keyframe i animationen - till 0px. Även
för elementet är fördröjning animation-delay
satt till 3 sekunder, därför kommer elementet efter
sidladdning att ställa sig i 300px,
och inte i 0px, och kommer att stå där 3
sekunder efter animationens start, och sedan hoppa
till 0px - och animationen startar därifrån:
<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;
}
:
Exempel . Värdet both och antal upprepningar lika med 1
I detta exempel är animation-fill-mode
satt till värdet both, och antalet
upprepningar av animationen - till 1. Efter
sidladdning kommer elementet att stå i
första keyframe i animationen (i 0px, och inte
i 300px), och efter att animationen spelats upp kommer elementet
att stanna kvar i det läget, där animationen slutade,
och inte hoppa tillbaka till startpunkten:
<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;
}
:
Se även
-
egenskapen
animation-name,
som anger animationens namn -
egenskapen
animation-duration,
som anger animationens varaktighet -
egenskapen
animation-delay,
som anger fördröjning före animationens utförande -
egenskapen
animation-timing-function,
som anger animationens hastighet -
egenskapen
animation-iteration-count,
som anger antalet iterationer av animationen -
egenskapen
animation-direction,
som anger animationens riktning -
egenskapen
animation-play-state,
som möjliggör att pausa animationen -
egenskapen
animation,
som är en förkortning för animationer -
kommandot
@keyframes,
som anger animationens keyframes -
mjuka övergångar
transition, som är en animation vid hovring över element