CSS-animaatiot
- Edellinen sivu CSS-putous
- Seuraava sivu CSS-työkalut
CSS-animaatiot
CSS voi toteuttaa HTML-elementtien animaationefektit ilman JavaScriptiä tai Flashia!
Tässä luvussa opit seuraavat ominaisuudet:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Animaation selaimen tuki
Taulukossa olevat luvut osoittavat ensimmäisen selaimen version, joka tukee tätä ominaisuutta täysin.
Ominaisuus | 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 |
Mitä CSS-animaatio on?
Animaatio saa elementin muuttumaan asteittain yhdestä tyystä toiseen.
Voit muuttaa vapaasti minkä tahansa määrän CSS-ominaisuuksia.
CSS-animaation käyttö vaatii, että sinun on ensin määritetty joitakin keskeisiä kehysviä.
Keskeiset kehysvät sisältävät elementin tyylit tietyn ajan kohdalla.
@keyframes-sääntö
Jos sinulla on @keyframes
Säännössä määritetään CSS-tyylit, ja animaatio muuttuu asteittain nykyisestä tyylistä uuteen tyyliin tiettyyn aikaan.
Jotta animaatio toimisi, sen on sidottava johonkin elementtiin.
Esimerkki sitoo "example"-animoinnin div-elementtiin. Animaatio kestää 4 sekuntia ja muuttaa div-elementin taustaväriä punaisesta keltaiseksi:
Esimerkki
/* Animaatiokoodi */ @keyframes example { from {taustaväri: punainen;} to {taustaväri: keltainen;} } /* sovelletaan animaatioefekti tähän elementtiin */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Huomioitavaa:animation-duration
Ominaisuus määrittää, kuinka kauan animaatio kestää. animation-duration
Jos ei määritetä ominaisuutta, animaatiota ei tapahdu, koska oletusarvo on 0s (0 sekuntia).
Yllä olevassa esimerkissä käyttämällä avainsanoja "from" ja "to" (jotka edustavat 0% (alku) ja 100% (valmistuminen)), olemme asettaneet milloin tyylejä muutetaan.
Voit myös käyttää prosenttiosuutta. Käyttämällä prosenttiosuutta voit lisätä tarpeen mukaan minkä tahansa määrän tyylejä.
Esimerkki muuttuu animaation valmistuttua 25%, 50% ja animaation valmistuttua 100% div-elementin taustavärin muuttuessa:
Esimerkki
/* Animaatiokoodi */ @keyframes example { 0% {taustaväri: punainen;} 25% {taustaväri: keltainen;} 50% {background-color: blue;} 100% {background-color: green;} } /* Käyttää animaatiota sisältävä elementti */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Esimerkissä animaation suorittu 25%, 50% ja 100% kokonaisuudessaan vaihdetaan taustaväri ja <div>-elementin sijainti:
Esimerkki
/* Animaatiokoodi */ @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;} } /* Käyttää animaatiota sisältävä elementti */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
Viivytä animaatiota
animation-delay
Atribuutti määrittää animaation alkamisen viiveen.
Esimerkissä on 2 sekunnin viive ennen animaation alkua:
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
Negatiiviset arvot ovat myös sallittuja. Jos käytetään negatiivista arvoa, animaatio alkaa toistua, ikään kuin se olisi jo toistunut N sekuntia.
Esimerkissä animaatio alkaa toistua, ikään kuin se olisi jo toistunut 2 sekuntia:
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
Aseta, kuinka monta kertaa animaation tulisi toistua
animation-iteration-count
Atribuutti määrittää, kuinka monta kertaa animaation tulisi toistua.
Esimerkissä animaatio ajetaan 3 kertaa ennen kuin se lopetetaan:
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
Esimerkissä käytetään arvoa "infinite", jotta animaatio jatkuu ikuisesti:
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
Toista animaatiota vastakkaiseen tai vaihtelevaan suuntaan
animation-direction
Atribuutti määrittää, onko animaatio toistettava eteenpäin, taaksepäin vai vaihtelevasti.
animation-direction
Ominaisuus voi hyväksyä seuraavat arvot:
normal
- Animaatio toistetaan normaalissa suunnassa (eteenpäin). Oletusarvoreverse
- Animaatio toistetaan vastakkaiseen suuntaan (taaksepäin)alternate
- Animaatio toistetaan ensin eteenpäin ja sitten taaksepäinalternate-reverse
- Animaatio toistetaan ensin taaksepäin ja sitten eteenpäin
Tässä esimerkissä animaatio ajetaan vastakkaiseen suuntaan (taaksepäin):
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
Esimerkissä käytetään arvoa "alternate", jotta animaatio ajetaan ensin eteenpäin ja sitten taaksepäin:
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate; }
Esimerkissä käytetään arvoa "alternate-reverse", jotta animaatio ajetaan ensin taaksepäin ja sitten eteenpäin:
Esimerkki
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate-reverse; }
Määritä animaation nopeuskaari
animation-timing-function
Ominaisuus määrittää animaation nopeuskaaren.
animation-timing-function
Ominaisuus voi hyväksyä seuraavat arvot:
ease
- Määritä nopeus, joka alkaa hitaasti, kiihtyy ja päättyy jälleen hitaasti (oletusarvo)linear
- Määritä alusta loppuun tasainen nopeus animaatiolleease-in
- Määritä hitaasti alkava animaatioease-out
- Määritä hitaasti päättävä animaatioease-in-out
- Määritä alku- ja loppusäännöllisesti hitaampi animaatiocubic-bezier(n,n,n,n)
- Suorita kolmen Bezier-funktion määrittämät omat arvosi
Seuraavat esimerkit näyttävät erilaisia nopeuskaareja, joita voidaan käyttää:
Esimerkki
#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;}
Määritä animaation täyttömalli
CSS-animaatiot eivät vaikuta elementtiin ennen ensimmäisen avainruudun toistoa tai sen jälkeen.animation-fill-mode
ominaisuus voi peittää tämän käyttäytymisen.
Kun animaatiota ei toisteta (alkaen ennen, päättymisen jälkeen tai molemmista),animation-fill-mode
Ominaisuus määrittää kohdeelementin tyylit.
animation-fill-mode-ominaisuus voi hyväksyä seuraavat arvot:
none
- Oletusarvo. Animaatio ei sovellaa minkäänlaista tyylejä elementtiin ennen suorittamista tai sen jälkeen.forwards
- Elementti säilyttää viimeisen avainruudusta asetetut tyylivärit (riippuen animation-directionista ja animation-iteration-countista).backwards
- Elementti saa ensimmäisestä avainruudusta asetetut tyylivärit (riippuen animation-directionista) ja säilyttää arvon animaation viivästymisen aikana.both
- Animaatio seuraa sekä eteen- että taaksepäin sääntöjä, laajentaen animaation ominaisuuksia molempiin suuntiin.
Esimerkki näyttää, kuinka <div>-elementti säilyttää viimeisen avainruudun tyylivärit arvot animaation päättymisen jälkeen:
Esimerkki
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-fill-mode: forwards; }
Seuraavassa esimerkissä <div>-elementti saa ensimmäisen avainkohdan asettaman tyylin ennen animaation alkua (animoinnin viivästymisajan aikana):
Esimerkki
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: backwards; }
Seuraavassa esimerkissä <div>-elementti saa ensimmäisen avainkohdan asettaman tyylin ennen animaation alkua ja säilyttää viimeisen avainkohdan asettaman tyylin animaation päätyttyä:
Esimerkki
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: both; }
Animaation lyhennetty ominaisuus
Seuraavassa esimerkissä käytetään kuutta animaatioparantetta:
Esimerkki
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
Käytä lyhennettyä animation
Ominaisuudet voivat myös toteuttaa saman animaation efektin kuin edellisessä esimerkissä:
Esimerkki
div { animation: example 5s linear 2s infinite alternate; }
CSS-animaatioparantteet
Seuraavassa taulukossa luetellaan @keyframes-säännöt ja kaikki CSS-animaatioparantteet:
Ominaisuus | Kuvaus |
---|---|
@keyframes | Määrittää animaatiomallin. |
animation | Asettaa kaikkien animaatioparantteiden lyhennetyn attribuutin. |
animation-delay | Määrittää, kuinka kauan animaatio viivästyy ennen kuin se alkaa. |
animation-direction | Määrittää, onko animaatio eteenpäin, taaksepäin vai vaihtelevasti toistettava. |
animation-duration | Määrittää, kuinka kauan kestää, kun animaatio suorittaa yhden kerran. |
animation-fill-mode | Määrittää elementin tyyli, kun animaatiota ei toisteta (alkuun, loppuun tai molempiin). |
animation-iteration-count | Määrittää animaation tulisi toistaa kertaa. |
animation-name | Määrittää @keyframes-animaation nimi. |
animation-play-state | Määrittää, onko animaatio käynnissä vai pysäytetty. |
animation-timing-function | Määrittää animaation nopeuskaaren. |
- Edellinen sivu CSS-putous
- Seuraava sivu CSS-työkalut