Moderní tvorba webových aplikací
O webu

Animace na webových stránkách

Jak na webu vytvářet animace a přechody v HTML, CSS a JS.

3 minuty

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.

  1. Jedna možnost je smířit se s tím — animace většinou nebývají pro web klíčové.
  2. Další možnost je animovaný obrázek GIF (půjde použít jen někdy).
  3. 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);
}
  1. Tato funkce se spustí třeba po kliknutí na tlačítko (onclick="zmena(this)").
  2. Nejprve se vezme současná hodnota opacity,
  3. odečte se 0.1 (tj. 10 %),
  4. provede se zaokrouhlení a již zaokrouhlená hodnota se použije jako nová hodnota průhlednosti,
  5. 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:

javascript.info

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ě.

Co si myslíte o tomto článku?

Diskuse

Související články

CSS item-pack: balance – vyvážené rozložení flex položek

Vlastnost item-pack: balance rozděluje flex položky rovnoměrně mezi řádky, podobně jako text-wrap: balance vyvažuje řádky textu.

11 minut

CSS Container Queries – responsivní komponenty

Jak pomocí @container, container-type a container-name vytvářet komponenty, které se přizpůsobí velikosti svého rodiče místo viewportu.

16 minut

CSS Anchor Positioning – posicování elementů relativně k jiným

Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.

6 minut

Centrování na webových stránkách

Moderní způsoby vertikálního i horizontálního centrování v CSS. Flexbox, Grid, margin auto a další techniky.

8 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata · Zkratky
2013–2026