Jak Vytvořit Efekt Zvednutí a Stínu na Kartách
Zjistěte, jak implementovat klassické hover efekty se stíny a transformacemi, které karty zvednou a vytvoří hloubku.
Jak zajistit, aby vaše hover efekty fungovaly správně na mobilních zařízeních bez hover stavů. Zahrnuje :active a media queries.
Znáte to – vytvoříte skvělý hover efekt s CSS animacemi a funguje to dokonale na desktopu. Pak si to otestujete na telefonu a… nic. Nebo horší – efekt se zasekne, nebo se chová podivně. Není to chyba vašeho kódu. Prostě mobilní zařízení nemají “hover” stav stejně jako počítače. Když se na mobilu dotkneš prvku, jsi tam fyzicky – není to plynulý pohyb kurzoru.
Dobrá zpráva? Máš řešení. CSS media queries a :active stav ti umožní vytvořit prvky, které se chovají správně na obou platformách. Není to o kompromisech – je to o inteligentním designu, který funguje všude.
Na desktopu máš :hover – stav, kdy kurzor vjetí na prvek. Na mobilu? Máš :active – stav, kdy se prvku dotýkáš. To je zásadní rozdíl. :hover je “trvalý” (kurzor se drží na prvku), zatímco :active je “okamžitý” (prstem se dotýkáš a pouštíš).
Prakticky to znamená: pokud chceš, aby se tvá animace spustila na mobilu, musíš ji připojit na :active, ne :hover. Ale čekej – není to tak jednoduché. Některé efekty chceš, aby byly trvalé (barva zůstane), jiné chceš, aby byly jen okamžité (třeba zoom). Musíš si tedy vybrat.
:hover se na mobilu v podstatě ignoruje. :active se spustí jen během dotyku a zmizí hned poté. To je důvod, proč se efekty chovají jinak.
Nejjednoduší řešení? Media queries. Můžeš si říct “Pokud je toto zařízení touch-enabled, udělej X. Pokud má myš, udělej Y.” Existuje media query přesně na to: @media (hover: hover).
Platí pro zařízení s myší nebo trackpadem. Tady můžeš použít :hover efekty. Animace, barvy, transformace – vše, co chceš.
Platí pro touch zařízení. Tady :hover nefunguje. Místo toho používej :active nebo :focus-visible pro interakci.
Myš nebo stylus – přesné ovládání. Můžeš používat hover efekty bez obav.
Prsty na dotykovém displeji. Efekty by měly být větší a jednodušší. Žádné micro-interakce.
Staré verze Internet Exploreru a starších mobilních prohlížečů nemusí podporovat všechny media queries, které jsme zmínili. Vždycky testuj svůj kód na cílových zařízeních. Moderní prohlížeče (Chrome, Firefox, Safari z posledních 2-3 let) jsou plně kompatibilní. Pokud podporuješ starší zařízení, je vhodné mít fallback styly.
Tak jak to vlastně napíšeš? Jednodušeji, než si myslíš. Vytvoříš si kartu s hover efektem a pak ji zabalíš do media query. Na desktopu se hover efekt spustí, na mobilu se ignoruje a místo toho se použije :active.
Klíč je rozumné plánování. Nemusíš mít dva úplně jiné styly. Často stačí mít základní hover efekt (třeba změna barvy) a pak pro touch zařízení udělat jednoduší alternativu (třeba jen :active se změní barva na chvilku). Uživatel na mobilu tak pořád vidí, že se něco stalo – jen to není tak divoké.
Zkušení vývojáři často používají kombinaci – :hover pro desktop s plynulou animací, :active pro mobil s ostrým přechodem. Výsledek? Obě zařízení se chovají správně a uživatelé jsou spokojení.
Chceš-li opravdu kvalitní řešení, musíš myslet na detaily. Zde je několik věcí, které vývojáři často přehlédnou:
Dotykově přívětivé animace nejsou raketová věda – jsou to jen chytré rozhodnutí. Musíš pochopit, jak se tvá zařízení chovají, a pak napsat CSS, který to respektuje. Media queries @media (hover: hover) a @media (hover: none) jsou tvé nejlepší kamarády. S těmito nástroji můžeš vytvořit efekty, které fungují všude – od velkých monitorů až k malým mobilům.
Pamatuj: nejlepší design je ten, který lidé ani nevnímají. Když se dotýkáš prvku na mobilu a něco se stane – to je skvělé. Když kurzor najede na prvek na desktopu a spustí se animace – také skvělé. To je cíl. Nejsi zaženu do jednoho řešení. Budeš chytrý a přizpůsobíš se.