Scroll Flow Logo Scroll Flow Kontaktujte nás
Návod Střední

Scroll-spy zvýraznění pro perfektní orientaci

Jak na JavaScript kód, který automaticky zvýrazní položku menu na základě toho, kterou sekci právě čtete.

9 minut čtení
Březen 2026 publikováno
5 sekcí obsahu
Responzivní webový design zobrazený na telefonu a tabletu s scroll-spy navigací

Co je to scroll-spy?

Scroll-spy je technika, která automaticky sleduje pozici čtenáře na stránce a zvýrazňuje odpovídající položku v navigaci. Když se čtenář posouvá dolů a dostane se ke třetí sekci, aktivní položka v menu se sama změní na třetí položku. To jsou ty ty chvíle, kdy si návštěvník myslí „aha, vím přesně kde jsem na stránce”.

Je to užitečné zejména na jednotránkových webech, kde máte obsah organizovaný do sekcí a chcete, aby měli uživatelé vždycky přehled o tom, kde se právě nacházejí. Scroll-spy pracuje bez toho, aby museli klikat na navigaci — prostě se čtou a menu se samo aktualizuje.

Proč to používat?

  • Zlepšuje orientaci uživatele na stránce
  • Vytváří dojem moderního a kvalitního webu
  • Pomáhá s SEO — Google vidí jasnou strukturu obsahu
  • Funguje bez klikání — čistě na scrollování

Jak scroll-spy technicky funguje

Scroll-spy se opírá o kombinaci HTML, CSS a JavaScriptu. HTML poskytuje strukturu — každá sekce má své ID. CSS pak vizuálně označuje aktivní položku (obvykle změnou barvy nebo přidáním tlustšího rámečku). JavaScript pak dělá tu „chytrou” práci.

JavaScript neustále poslouchá událost scroll . Když se stránka posune, zkontroluje, která sekce je právě viditelná v okně prohlížeče (pomocí metody getBoundingClientRect() ). Jakmile zjistí, která sekce je aktivní, aktualizuje CSS třídu na odpovídající položku v menu.

Nejčastěji se to implementuje takto: každé menu má data-atribut, který odkazuje na ID sekce. Když je sekce viditelná, JavaScript přidá třídu active na příslušnou menu položku.

Diagram ukazující vztah mezi sekcemi obsahu a položkami navigace s aktivním zvýrazněním
Kód JavaScriptu pro scroll-spy funkčnost se zvýrazněním klíčových linií

Praktická implementace

Základní implementace je překvapivě jednoduchá. Potřebujete HTML strukturu, kde každá sekce má ID a každá navigační položka má data-atribut odkazující na to ID.

V JavaScriptu pak vytvoříte funkci, která zjistí, která sekce je v okně viditelná. Nejjednoduší přístup je projít všechny sekce a kontrolovat jejich pozici vůči hornímu okraji okna. Když najdete aktivní sekci, přidáte třídu active na odpovídající menu položku a odstraníte ji ze všech ostatních.

Mnozí vývojáři používají knihovnu jako Intersection Observer API, která je modernější a výkonnější. Umožňuje vám sledovat, kdy prvek vstoupí nebo opustí viditelnou oblast okna bez neustálého sledování scroll událostí.

Jaký přístup zvolit

Máte v zásadě tři možnosti. První je klasický event listener na scroll — jednoduché, ale méně efektivní, protože se kód spouští pokaždé, když se stránka posune o pár pixelů. Druhá možnost je Intersection Observer API — moderní, efektivní a jednoduchý na používání. Třetí je knihovna typu Smooth Scroll nebo AOS, která to řeší za vás.

Pro menší projekty se vypořádáte s klasickým scroll event listenarem bez problémů. Pokud máte ale ambiciózní stránku s mnoha sekcemi, doporučuji Intersection Observer. Je to nativní API, nepotřebujete žádné závislosti a výkon je výrazně lepší.

Průměrně se scroll-spy implementuje za 30-45 minut, když víte, co děláte. Bez zkušeností to může trvat i hodinu a půl, ale i to se vyplatí.

Porovnání tří různých přístupů k implementaci scroll-spy s jejich výhody a nevýhody

Užitečné tipy a triky

Optimalizace výkonu

Pokud máte scroll listener, přidejte throttling — to znamená, že se kód nespouští na každý scroll event, ale třeba jen jednou za 100 milisekund. Výkon stránky se zlepší znatelně.

Plynulé přechody

Když se aktivní třída změní na navigační položku, dodejte jí CSS transition. Barva nebo podtržení se bude měnit plynule místo skokového přepínání, což vypadá lépe.

Mobilní navigace

Na mobilu se navigace často skrývá v hamburger menu. Scroll-spy funguje stejně, ale musíte myslet na to, že menu není vždy viditelné. Někdy je dobré přidat indikátor pozice jinak — třeba barevný pruh nahoře.

Offset pro fixed header

Pokud máte fixed header (navigace přilepená nahoře), musíte v scroll-spy kódu počítat s jeho výškou. Jinak se bude zdát, že aktivní položka je o kousek vedle. Přidejte offset rovný výšce headeru.

Klikání na menu

Když uživatel klikne na navigační položku, měla by stránka plynule přejít na danou sekci. Použijte scroll-behavior: smooth; v CSS. Scroll-spy pak zaznamená pohyb a aktualizuje se.

Testování

Testujte scroll-spy na skutečných zařízeních — na mobilech, tabletů a desktopu. Chování se může lišit. Zkontrolujte taky, jak se chová v různých prohlížečích, zvláště v Safari.

Závěr

Scroll-spy zvýraznění není náročné na implementaci a přinese vám spoustu hodnoty. Vaši návštěvníci budou vědět, kde na stránce jsou, a to jim dá pocit kontroly. Na jednotránkových webech to vytvořit profesionální dojem a zlepšit navigaci bez zbytečného klikání.

Začněte s jednoduchým přístupem — scroll event listener nebo Intersection Observer API. Jakmile to bude fungovat, můžete přidat plynulé přechody, optimalizace a vylepšení. Nejdůležitější je, aby to fungovalo a vypadalo hezky.

Pokud se vám teď chce zkusit to hned implementovat, je to skvělý nápad. Nejlépe se to naučíte tím, že si to sami zkusíte. A když vám to poprvé nebude fungovat, to je v pořádku — kódu se učíme skrze chyby.

Důležité poznámky

Informace v tomto článku jsou určeny k vzdělávacím účelům. Každý projekt je jiný a může vyžadovat vlastní řešení. Vždycky testujte váš kód v reálných podmínkách a ověřte si kompatibilitu s vašimi cílovými prohlížeči. Pokud pracujete s klientem, komunikujte o výkonu a požadavcích před implementací. Kód uvedený v příkladech je zjednodušený — v produkčním prostředí zvažte bezpečnost, výkon a dostupnost.

Tomáš Novotný, seniorní frontend designer

Tomáš Novotný

Senior Frontend Designer a vedoucí tým UX

Seniorní frontend designer se 14 lety praxe v designu jednotránkových webů, vedoucí tým UX v Scroll Flow s.r.o. Specialista na scroll-spy navigaci a interaktivní prvky.