Animace na webových stránkách
Jak na webu vytvářet animace a přechody v HTML, CSS a JS.
O animování v samotném CSS pojednává článek animace pomocí transition
. S tím si nevystačíme vždy (lze používat jen pár událostí). Pro zajímavější výtvory je třeba zkombinovat CSS se špetkou JavaScriptu.
JavaScript + CSS transition
Je to relativně jednoduché, postupuje se podobně jako u čistého CSS a událostí (:hover
, :focus
apod.), jen se reaguje na změnu třídy (.zmena
), kterou prohazuje JavaScript.
CSS
button {background: red; transition: background 1s}
button.zmena {background: green}
Vytvořit lze ledasco.
Více CSS 3 animací ovládaných JavaScriptem
Čistý JavaScript
Nesmíme zapomínat, že CSS přechody fungují až od Internet Exploreru 10, tedy návštěvníci starších prohlížečů budou o takové animační efekty ochuzeni.
- Jedna možnost je smířit se s tím — animace většinou nebývají pro web klíčové.
- Další možnost je animovaný obrázek GIF (půjde použít jen někdy).
- Nakonec zbývá řízení celé animace JavaScriptem (tomu se věnuje zbytek článku).
Podstata řešení je vytvořit časovač, který za danou dobu v daných intervalech bude měnit určitou CSS vlastnost. Tento časovač bude ve funkci a zároveň bude tuto funkci rekursivně volat.
JS funkce
function zmena(tlacitko) {
tlacitko.style.opacity = Math.round((tlacitko.style.opacity-0.1) * 100) / 100;
if (tlacitko.style.opacity)
setTimeout(function() { zmena(tlacitko) }, 30);
}
- Tato funkce se spustí třeba po kliknutí na tlačítko (
onclick="zmena(this)"
). - Nejprve se vezme současná hodnota
opacity
, - odečte se
0.1
(tj. 10 %), - provede se zaokrouhlení a již zaokrouhlená hodnota se použije jako nová hodnota průhlednosti,
- pokud průhlednost není nula/
false
, spustí se funkce časovačem znovu.
Detailněji popsaná universálnější technika animování v JS je na:
JS frameworky
Většina JS frameworků (jako třeba jQuery) taktéž nabízejí pohodlné hotové funkce pro animování nebo dokonce hotové základní animace jako zmizení, odlétnutí, zmenšení a podobně.
Komentáře