CSS animation
- Forrige side CSS overgange
- Næste side CSS værktøjestip
CSS animation
CSS kan realisere animationseffekter for HTML-elementer uden at bruge JavaScript eller Flash!
I dette kapitel vil du lære følgende egenskaber:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Browserstøtte for animationer
Tallene i tabellen angiver den første browserversion, der fuldt ud understøtter egenskaben.
属性 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
Hvad er CSS-animation?
Animationer får elementer gradvist fra én stil til en anden.
Du kan frit ændre et hvilket som helst antal CSS-egenskaber.
For at bruge CSS-animationer skal du først specificere nogle kerningrammer for animationen.
Kerningrammer indeholder stilen, som elementet har på et bestemt tidspunkt.
@keyframes-reglen
Hvis du i @keyframes
Reglen specificerer CSS-stil, og animationen ændrer sig gradvist fra den nuværende stil til den nye stil på et bestemt tidspunkt.
For at gøre animationen effektiv, skal du binde animationen til et element.
Dette eksempel binder "example"-animationen til <div>-elementet. Animationen varer 4 sekunder, og baggrundsfarven på <div>-elementet ændres gradvist fra "red" til "yellow":
实例
/* Animasjonskoden */ @keyframes example { fra {background-color: red;} til {background-color: yellow;} } /* Anvend animationseffekt på dette element */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Bemærk:animation-duration
Egenskab definerer, hvor lang tid animationen skal tage at fuldføre. Hvis ikke specificeret animation-duration
Egenskab, så vil animationen ikke finde sted, fordi standardværdien er 0s (0 sekunder).
I det ovenstående eksempel har vi med nøgordene "fra" og "til" (som repræsenterer 0% (start) og 100% (afslutning)) sat, hvornår stilen skal ændres.
Du kan også bruge procenter. Ved at bruge procenter kan du tilføje så mange stilændringer, som du har brug for.
Dette eksemplet vil ændre baggrundsfarven på <div>-elementet, når animationen er fuldført 25%, 50% og 100%.
实例
/* Animasjonskoden */ @keyframes example { 0% {background-color: red;} 25% {background-color: yellow;} 50% {background-color: blue;} 100% {background-color: green;} } /* Elementer som appliserer animasjon */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Dette eksempelet endrer bakgrunnsfarge og <div>-elementets posisjon når animasjonen er ferdig 25%, 50% og 100%:
实例
/* Animasjonskoden */ @keyframes example { 0% {background-color:red; left:0px; top:0px;} 25% {background-color:yellow; left:200px; top:0px;} 50% {background-color:blue; left:200px; top:200px;} 75% {background-color:green; left:0px; top:200px;} 100% {background-color:red; left:0px; top:0px;} } /* Elementer som appliserer animasjon */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
Forsinket animasjon
animation-delay
Egenskapen definerer forsinkelsen før animasjonen starter.
Dette eksempelet har en forsinkelse på 2 sekunder før animasjonen starter:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
Negativ verdier er også tillatt. Hvis du bruker en negativ verdi, starter animasjonen som om den allerede har spilt N sekunder.
I dette eksempelet starter animasjonen som om den allerede har spilt 2 sekunder:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
Sett hvor mange ganger animasjonen skal kjøre
animation-iteration-count
Egenskapen spesifiserer hvor mange ganger animasjonen skal kjøre.
Dette eksempelet kjører animasjonen 3 ganger før den stopper:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
Dette eksempelet bruker verdien "infinite" for å gjøre animasjonen fortsette for alltid:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
Reversere eller alternere animasjon
animation-direction
Egenskapen spesifiserer om animasjonen skal spille fremover, bakover eller alternativt.
animation-direction
Egenskaben kan acceptere følgende værdier:
normal
- Animasjonen spiller normalt (fremover). Standardverdireverse
- Animasjonen spiller i motsatt retning (bakover)alternate
- Animasjonen spiller først fremover, og deretter bakoveralternate-reverse
- Animasjonen spiller først bakover, og deretter fremover
Følgende eksempel kjører animasjonen i motsatt retning (bakover):
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
Dette eksempelet bruker verdien "alternate" for å gjøre animasjonen kjøre fremover før den kjører bakover:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate; }
Dette eksempelet bruker verdien "alternate-reverse" for å gjøre animasjonen kjøre bakover før den kjører fremover:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate-reverse; }
Angiv animationens hastighedskurve
animation-timing-function
Egenskaben bestemmer animationens hastighedskurve.
animation-timing-function
Egenskaben kan acceptere følgende værdier:
ease
- Angiv en animation, hvor der starter langsomt, derefter accelererer og derefter afsluttes langsomt (standard)linear
- Angiv en animation, hvor hastigheden er konstant fra begyndelse til afslutningease-in
- Angiv en animation, hvor begyndelsen er langsommereease-out
- Angiv en animation, hvor afslutningen er langsommereease-in-out
- Angiv en animation, hvor begyndelsen og afslutningen er langsommerecubic-bezier(n,n,n,n)
- Kør dine egne værdier defineret i en tredobbelt Bezier-funktion
Disse eksempler viser nogle af de forskellige hastighedskurver, der kan bruges:
实例
#div1 {animation-timing-function: linear;} #div2 {animation-timing-function: ease;} #div3 {animation-timing-function: ease-in;} #div4 {animation-timing-function: ease-out;} #div5 {animation-timing-function: ease-in-out;}
Angiv animationens fyldningsmåde
CSS-animation påvirker ikke elementet før den første nøgleframe afspilles eller efter den sidste nøgleframe afspilles.animation-fill-mode
kan egenskaben over ride dette adfærd.
Når animationen ikke afspilles (før starten, efter afslutningen eller begge dele),animation-fill-mode
Egenskaben bestemmer stilen på målelementet.
animation-fill-mode-eegenskaben kan acceptere følgende værdier:
none
- Standardværdi. Animation påføres ikke nogen stil til elementet før eller efter udførsel.forwards
- Elementet holder på stilværdierne sat af den sidste nøgleframe (afhængigt af animation-direction og animation-iteration-count).backwards
- Elementet får stilværdierne sat af den første nøgleframe (afhængigt af animation-direction) og holder værdien under animationens forsinkelse.both
- Animationen følger både fremad- og baglænsregler, hvilket udvider animationseegenskaberne i begge retninger.
Dette eksempel lader <div>-elementet beholde stilværdier fra den sidste nøgleframe efter afslutningen af animationen:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-fill-mode: forwards; }
下面的例子在动画开始之前(在动画延迟期间)使 <div> 元素获得由第一个关键帧设置的样式值:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: backwards; }
下面的例子在动画开始之前使 <div> 元素获得第一个关键帧设置的样式值,以及在动画结束时保留最后一个关键帧的样式值:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: both; }
动画简写属性
下例使用六种动画属性:
实例
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
使用简写的 animation
属性也可以实现与上例相同的动画效果:
实例
div { animation: example 5s linear 2s infinite alternate; }
CSS 动画属性
下表列出了 @keyframes 规则和所有 CSS 动画属性:
属性 | 描述 |
---|---|
@keyframes | 规定动画模式。 |
animation | 设置所有动画属性的简写属性。 |
animation-delay | 规定动画开始的延迟。 |
animation-direction | 定动画是向前播放、向后播放还是交替播放。 |
animation-duration | 规定动画完成一个周期应花费的时间。 |
animation-fill-mode | 规定元素在不播放动画时的样式(在开始前、结束后,或两者同时)。 |
animation-iteration-count | 规定动画应播放的次数。 |
animation-name | 规定 @keyframes 动画的名称。 |
animation-play-state | Fastlægger, om animationen kører eller pauser. |
animation-timing-function | Fastlægger hastighedskurven for animationen. |
- Forrige side CSS overgange
- Næste side CSS værktøjestip