CSS3 animáció
A következőkben a CSS3 animációs képességeit, azok használatának módját szeretném bemutatni nektek. A CSS3 animációt a piacon levő böngészők közül csak az Internet Explorer nem támogatja, így érdemes valamelyik másikat is beszerezni, ha még nem rendelkezel vele; például a Firefoxot vagy a Chrome-ot.
Ez a kis kitérő után tekintsük át, hogy miként is működik a CSS3 animáció:
- @keyframes – A segítségével definiálhatjuk magát az animációt, from{ paraméterek } – to { paraméterek } vagy %-os értékekkel, ahogy a példámban is láthatjátok majd.
- animation – A rövid forma segítségével lehet megadni az alábbi opciókat.
animation: |name |duration| timing-function| delay |iteration-count| direction; - animation-name – A @keyframes animációnk egyedi nevét adhatjuk meg a segítségével.
- animation-duration – Az animáció hosszát, időtartamát definiáljuk vele. Alapértelmezésben: 0. Pl.: animation-duration: 5s;
- animation-timing-function – Az animáció módját állítjuk vele. Alapértelmezésben: „ease”
Opciói:
linear – Egyenletes sebességgel halad az animáció „elejétől a végéig” (javasolt)
ease – Lassan indul, majd gyorsul és a végén újra lassan fejeződik be.
ease-in – Lassan induló, majd normál tempóban megy végig az animáció
ease-out – Normál tempóban kezdődő és lassan végződő animáció
ease-in-out – Lassan induló és végződő animáció - animation-delay – Az animáció indulásának késleltetése. Alapértelmezésben 0 Pl.: animation-delay:2s; (2 másodperccel késleltetve)
- animation-iteration-count – A segítségével megadhatjuk, hogy hányszor játssza le az animációt. Alapértelmezésben 1
- animation-direction – Az animáció irányát adhatjuk meg vele. Alapértelmezésben „normal” Opcionálisan „alternate” (nálam a példában backwards)
- animation-play-state – Az animáció szüneteltetésére és futtatására adhatunk vele utasítást. Alapértelmezésben „running” Opcionálisan „paused”
Mivel a CSS3 még nem teljes-körűen támogatott célszerű mindent a böngészőknek kedvezve definiálni, pl. így:
animation: animaciom 5s linear; /* egységes */ -moz-animation:animaciom 5s linear; /* Firefox */ -webkit-animation:animaciom 5s linear; /* Safari és Chrome */ -o-animation:animaciom 5s linear; /* Opera */
<html> <head> <style> div { width:150px; /*négyzet definiálása*/ height:150px; background:red; position:relative; animation:negyzet 5s infinite; /*5 másodperc alatt, "loop"-olva*/ -moz-animation:negyzet 5s infinite; /* Firefox */ -webkit-animation:negyzet 5s infinite; /* Safari és Chrome */ -o-animation:negyzet 5s infinite; /* Opera */ } @keyframes negyzet { from {top:0px;} to {top:300px;} } @-moz-keyframes negyzet/* Firefox */ { from {top:0px;} to {top:300px;} } @-o-keyframes negyzet/* Opera */ { from {top:0px;} to {top:300px;} } @-webkit-keyframes negyzet/* Safari és Chrome */ { from {top:0px;} to {top:300px;} } </style> </head> <body> <div></div> </body> </html>
A működő példát itt meg tudod tekinteni.
A következő példában a %-os definíciót fogjuk használni. A feladat megegyezik a fentivel.
<!DOCTYPE html> <html> <head> <style> div { width:150px; /*négyzet definiálása*/ height:150px; background:red; position:relative; animation:negyzet 5s infinite; /*5 másodperc alatt, "loop"-olva*/ -moz-animation:negyzet 5s infinite; /* Firefox */ -webkit-animation:negyzet 5s infinite; /* Safari és Chrome */ -o-animation:negyzet 5s infinite; /* Opera */ } @keyframes negyzet { 0% { top:0px; } 25% { top: 70px } 50%{ top: 140px } 75%{ top: 210px } 100%{ top:300px; } } @-moz-keyframes negyzet/* Firefox */ { 0% { top:0px; } 25% { top: 70px } 50%{ top: 140px } 75%{ top: 210px } 100%{ top:300px; } } @-o-keyframes negyzet/* Opera */ { 0% { top:0px; } 25% { top: 70px } 50%{ top: 140px } 75%{ top: 210px } 100%{ top:300px; } } @-webkit-keyframes negyzet/* Safari és Chrome */ { 0% { top:0px; } 25% { top: 70px } 50%{ top: 140px } 75%{ top: 210px } 100%{ top:300px; } } </style> </head> <body> <div></div> </body> </html>
A példát itt tudjátok megnézni.
Ha megnéztétek mind a két példát, biztosan észre vettétek, hogy a második példában, a négyzet a definiált százalékoknál egy pillanatra megáll. A két definíciós mód között első körben ez a legszembetűnőbb különbség. Természetesen, ezt könnyen orvosolhatjuk, ha a közbenső értékeket (25%,50% és 75%) töröljük a példából, így tökéletes lesz az átmenet a %-os értékek segítségével is. Viszont, megjegyzem, hogy egy összetett animáció esetén a %-os paraméterezés könnyebben használható.
Tehát a megtorpanások nélküli %-os kód a következő:
<!DOCTYPE html> <html> <head> <style> div { width:150px; /*négyzet definiálása*/ height:150px; background:red; position:relative; animation:negyzet 5s infinite; /*5 másodperc alatt, "loop"-olva*/ -moz-animation:negyzet 5s infinite; /* Firefox */ -webkit-animation:negyzet 5s infinite; /* Safari és Chrome */ -o-animation:negyzet 5s infinite; /* Opera */ } @keyframes negyzet { 0% { top:0px; } 100%{ top:300px; } } @-moz-keyframes negyzet/* Firefox */ { 0% { top:0px; } 100%{ top:300px; } } @-o-keyframes negyzet/* Opera */ { 0% { top:0px; } 100%{ top:300px; } } @-webkit-keyframes negyzet/* Safari és Chrome */ { 0% { top:0px; } 100%{ top:300px; } } </style> </head> <body> <div></div> </body> </html>
A demót itt tudjátok megnézni.
Forrás:
http://dev.w3.org/csswg/css3-animations/
