
Plynulý přechod mezi stránkami
Jak vytvořit plynulý animovaný přechod mezi dvěma stránkami.
Snažíme-li se webovou stránku vytvářet s ohledem na krásu (s využitím animací a různých plynulých přechodů), může působit přechod mezi dvěma stránkami lehce rušivě. Zvlášť potom u komplikovanějších layoutů lze pozorovat nepěkné probliknutí, než si prohlížeč přechroupe HTML, CSS a JavaScript.
První možnost, jak se tomuto vyhnout, je použít AJAX a veškerý obsah načítat asynchronně.
To díky history.pushState sice jde řešit i s používáním normálních URL, ale stránka se stává náchylnější k chybám, kdy drobná chyba v JS může znefunkčnit celou navigaci na webu. Klasický přechod mezi stránkami je vlastně takový restart všech skriptů.
Kromě toho je zajaxování webu relativně pracné.
Skrytí a zobrazení animací

Řešením proto může být:
- Použití skrývací animace před opuštěním stránky.
- Použití zobrazovací animace na začátku načtení stránky.
Potřebnou animaci stačí vytvořit pomocí @keyframes a přiřadit ji do vlastnosti animation). Zpětný průchod animací zajistí klíčové slovo reverse.
Objevovací animace se spustí při načtení stránky.
Animace zmizení bude vyvolána po kliknutí na odkaz mířící pryč. Získat všechny odkazy na stránce jde z document.links. Nabízelo by se možná použít událost onbeforeunload, nicméně nejspíš ji nejde rozumně časovat, takže by nešlo garantovat přehrání ukončovací animace.
Živá ukázka
Odkazy jinam
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.
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.
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.
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.