# Tvořím web A–Z: lekce 8 Podzim 2021, Praha <small>16. listopadu 2021</small> --- # Dnešní cíle - Naučit se CSS transformace a předchody (transitions) - Seznámit se s tvorbou animací pomocí CSS --- # Transform ≠ Transition - transform = změna tvaru elementu - transition = animace přechodu mezi stavy elementu --- # Transform CSS vlastnost `transform` s hodnotami například: - `translate(x, y)` - `scale(x, y)` - `rotate(deg)` - `skew(deg)` - ... note: - https://css-tricks.com/almanac/properties/t/transform/ --- # Transform - Příklad 1/2 ```css /* Zkosení */ .skew { transform: skew(-15deg); } /* Otočení */ .rotate { transform: rotate(-15deg); } ``` note: - jendotka `deg` = úhel ve stupních - https://developer.mozilla.org/en-US/docs/Web/CSS/angle --- # Transform - Příklad 2/2 ```css /* Posun */ .translate { transform: translate(0, 50%); } /* Změna velikosti */ .scale { transform: scale(1.5); } ``` --- # Transition CSS vlastnost `transition`: - `<property> <duration> <easing> <delay>` - `property`: vlastnost, na kterou se `transition` vstahuje, prázdná znamená všechny - `duration`: délka přechodu (v ms) - `easing`: křivka hodnot v čase - `delay`: zpoždění animace (v ms) --- # Transition - Příklad ```css button { background-color: blue; transition: 300ms; } button:hover { background-color: red; } ``` --- # Transition - Příklad jednotlive vlatnosti 1/2 ```css div { /* co se bude animovat */ transition-property: margin, height, ...; /* jakým způsobem se bude animovat */ transition-timing-function: ease | linear |...; } ``` note: - https://css-tricks.com/almanac/properties/t/transition/ --- # Transition - Příklad jednotlive vlatnosti 2/2 ```css div { /* jak dlouho bude animace probíhat */ transition-duration: 500ms | 0.5s; /* jak dlouho se počká než začne průběh */ transition-delay: 500ms | 0.5s; } ``` --- # Transition - Zkrácený zápis ```css element { transition: ([transition-property]) [transition-duration] ([transition-timing-function]) ([transition-delay]); } ``` --- # Transition - Zkrácený zápis - Příklad ```css div { margin-top: 100px; transition: margin-top 300ms ease 1s; } div:hover { margin-top: 200px; } ``` note: - https://css-tricks.com/almanac/properties/t/transition-timing-function/ --- # Animace - CSS vlastnost `animation`: - `nazev-animace delka [pocet opakovani] [smer] [fillmode]` - `animation-iteration-count` - počet opakování nebo `infinite` - `animation-direction` - `normal`, `reverse`, `alternate` - `animation-fill-mode` - `none`, `forwards`, `backwards`, ... - Definice animace pomocí `@keyframes nazev-animace`: - `from { vychozi stav }` - `to { cilovy stav }` - `X% { stav v daném procentu animace }` --- # Animace - Příklad ```css .icon { animation-name: spin; /* název shodný s názvem za @keyframes */ animation-duration: 2s; /* trvání animace */ animation-iteration-count: infinite; /* počet opakování */ animation-timing-function: linear; /* průběh animace */ } @keyframes spin { from { /* výchozí stav prvku */ } to { /* koncový stav prvku */ } } ``` --- # Povinný domácí úkol - Zadaný v classrooms - Ukážeme si co je třeba - https://classroom.github.com/a/QRkwdiJB ![Super appka](https://raw.githubusercontent.com/TvorimWeb-2018-Praha/projekt3-superappka/master/vysledek.png)