Zmenšování headeru při scrollování — kdy a jak
Technika, kterou používají velké e-shopy. Ušetří místo na obrazovce a vypadá pro…
Přečíst článekNejčastější chyba: fixní menu přikryje nadpis nebo důležitý formulář. Návod, jak se tomu vyhnout a proč to záleží.
Když navrhujete fixní menu, snadno se stane, že se obsah pod ním skrývá. Není to vada designu — je to fyzika webu. Sticky prvky se vynímají z normálního toku dokumentu a leží nad zbytkem stránky.
Představte si to tak: máte list papíru a na něj si nalepíte lístek s textem. Ten lístek teď zakrývá část papíru pod ním. Není to špatně — prostě je tam. Jenže na webu to vede k problému, když se uživatel dostane na konkrétní obsah. Skončí pod tím lístkem.
Nejhorší případ? Fixní menu skryje h1 nadpis, když se stránka načte. Nebo zakryje tlačítko ve formuláři. Nebo důležitý obsah, který uživatel právě hledá.
CSS vlastnost
scroll-margin-top
řeší přesně tenhle problém. Řeknete prvku: “Když se uživatel na tebe proklikne, začni o tolik pixelů níž, aby se nekrepal pod fixní menu.”
Řekněme, že máte fixní header vysoký 80 pixelů. Když uživatel klikne na odkaz na h2 nadpis, měl by se tento nadpis posunout o těch 80 pixelů níž, aby nebyl pod headerem.
Přidáte jednoduše CSS:
h2 { scroll-margin-top: 100px; }
Pozor na rezervu — použijte 100px místo přesných 80px. Chceme, aby obsah měl trochu vzdušnosti, ne aby těsně ční pod headerem.
Poznámka: Tenhle návod je pro vzdělávací účely. Každý web je jiný a potřebuje přizpůsobení. Některé staré prohlížeče scroll-margin-top neznají — vždy testujte na svém cílovém publiku.
Scroll-margin-top není jediný způsob. Existují dalších několik přístupů, které se osvědčily u velkých českých webů.
Přidáte neviditelný
padding-top
na prvek s id. Funguje všude, ale je to hacknutí.
Posloucháte kliknutí a ručně scrollujete na správné místo. Funguje, ale je to složité a pomalejší.
Sticky se chová jinak — prvek “leží” v normálním toku, jen se přilepí. Někdy stačí změnit fixed na sticky.
Na malých obrazovkách je to ještě kritičtější. Pokud máte hamburger menu vysoké 56 pixelů a pod ním obsah, musíte použít
scroll-margin-top: 60px
či více.
Reálný případ: máte formulář na mobilní stránce. Uživatel klikne na “Jméno” a chcete, aby se input field zobrazil hned pod headerem, ne aby byl skrytý. To se řeší tím, co jsme probírali.
Věřte nám — bez toho to vypadá jako chyba v designu, i když je to jen technický detail.
scroll-margin-top
na všechny h1, h2, h3 a další klíčové prvky
Sticky prvky nejsou problém samy o sobě. Jsou skvělá věc — ušetří vám место na obrazovce a uživatelé mají vždy navigaci po ruce. Ale musíte myslet na to, co leží pod nimi.
Scroll-margin-top je jednoduchý, elegantní způsob, jak to vyřešit. Jedna řádka CSS a problém zmizí. Není to nový trik — je to standardní CSS, který funguje ve všech moderních prohlížečích.
Vaši uživatelé si to nebudou všímat — to je to nejlepší na tom. Budou jen cítit, že web funguje správně.