Lightbox overlay a fullscreen zoomování

Postup pro implementaci elegantního lightbox efektu s hladkými přechody, klávesnicí a gesty na mobilu. Vše bez externích knihoven.

15 min čtení Pokročilý březen 2026
Obrazovka s otevřeným lightbox oknem zobrazujícím zvětšenou fotografii s přechodovými efekty a tmavým overlay pozadím
Tomáš Novotný, senior expert frontend designu
Autor

Tomáš Novotný

Senior Expert Frontend Design

Senior expert frontend designu s 14 lety zkušeností v tvorbě responzivních galerií a lightbox řešení pro webová portfolia.

Jak funguje lightbox overlay

Lightbox je jedním z nejpopulárnějších způsobů, jak zobrazit fotografie v plné velikosti. Když si návštěvník klikne na miniaturu, objeví se tmavé pozadí — tzv. overlay — a obrázek se zvětší na celou obrazovku. Přechod by měl být hladký, bez skákání.

Klíčová je kombinace CSS přechodů a JavaScript manipulace s DOM elementem. Nemusíte používat knihovnu — s moderním JavaScriptem a CSS animacemi se obejdete sami. Výsledek? Lehčí kód, lepší výkon, žádné závislosti na třetích stranách.

Uživatelé očekávají, že budou moci zavřít lightbox klávesou Escape, kliknout mimo obrázek nebo gesty na mobilu. To všechno se dá implementovat bez komplikovaných knihoven.

Laptop zobrazující přechodový efekt lightbox overlay s tmavým pozadím a zvětšeným obrázkem
Designer pracující na responzivním designu lightbox efektu na tabletovém zařízení

Stavba HTML struktury

Začneme s jednoduchou strukturou. Budete mít galerií miniatur — každá s atributem data-full-image, který obsahuje cestu k velkému obrázku. Pak vytvoříte skrytý lightbox element, kterého se zobrazí až po kliknutí.

Struktura vypadá takto: kontejner pro overlay, kontejner pro samotný obrázek a tlačítko pro zavření. Všechno je předdefinované v HTML — JavaScript ho jen zobrazí nebo skryje. To je nejjednoduší přístup a funguje i bez JavaScriptu částečně (s CSS).

Důležité je, aby HTML byl sémantický a přístupný. Tlačítko zavření by mělo mít správný aria-label, aby čtečky obrazovky věděly, co dělá.

CSS animace a přechody

Overlay by se měl zobrazit s plynulým přechodem. Používáme opacity — změní se z 0 na 1 během 0,3 sekundy. Obrázek sám by měl škálovat — začne malý a zvětší se. Transform: scale() je ideální pro tento efekt.

Všechny animace by měly používat ease-in-out timingovou funkci — není to lineární pohyb, ale přirozený, kterému se říká easing. Pokud uděláte lineární animaci, bude vypadat mechanicky. Uživatelé si všimnou rozdílu.

Pozadí overlay se vykresluje pomocí backdrop-filter nebo jednoduchého tmavého background s nižší opacitou. Druhý přístup je rychlejší a lépe podporován.

Vývojářský monitor zobrazující CSS kód pro animace lightbox efektu s přechodovými hodnotami

Poznámka k kompatibilitě

Tento návod používá moderní CSS vlastnosti jako backdrop-filter a CSS transitions. Podpora je velmi dobrá ve všech současných prohlížečích (Chrome, Firefox, Safari, Edge). Starší verze IE 11 nebudou lightbox animace podporovat, ale obrázek se stále zobrazí — jen bez efektů. Vždy testujte na cílových zařízeních vašich uživatelů.

Mobilní zařízení zobrazující dotykové gesta pro ovládání lightbox galerie

Ovládání klávesnicí a gesty

Uživatelé na desktopu budou chtít zavřít lightbox klávesou Escape. To se dá elegantně řešit event listenrem na keydown. Když uživatel stiskne ESC (KeyCode 27), lightbox se zavře. Je to standardní chování a všichni ho znají.

Na mobilu chcete gesta — swipe vlevo/vpravo pro navigaci mezi fotkami, dotyk na overlay pro zavření. Touch API je dostupné ve všech moderních telefonech. Detectovat swipe můžete pomocí touchstart a touchend eventů — není k tomu třeba knihovna.

Kombinace klávesnice + gesty + myš dělá aplikaci přirozená a intuitivní. Uživatelé se cítí v kontrole a nemusejí hledat jak se vrátit.

Optimalizace pro mobilní zařízení

Lightbox musí vypadat správně na všech velikostech obrazovky. Na malých mobilech se obrázek přizpůsobuje — nesmí překročit viewport. Používáme max-width: 90vw a max-height: 90vh, aby byl prostor pro zavření a ovládání.

Font v popisku fotky se měl také přizpůsobovat — na telefonu menší, na desktopu větší. Klamp funkce v CSS (clamp()) je skvělá pro tohle — nastaví minimální a maximální velikost a přizpůsobuje se mezi nimi.

Orientace zařízení se může změnit — v portrait nebo landscape módu. Lightbox by měl zůstat čitelný a ovladatelný v obou. Media query a event listener na orientationchange vám pomůžou.

Tablet v landscape módu zobrazující optimalizovaný lightbox s responzivním rozvržením

Závěr: Jednoduchý a elegantní lightbox

Lightbox není složitý projekt. S moderním CSS a JavaScriptem se obejdete bez externích knihoven. Hladké přechody, klávesnicové zkratky a dotykové gesta dělají z lightboxu profesionální řešení, kterého se uživatelé nebudou bát používat.

Klíč je v detailech — správný timing animací, dostupné ovládání a přizpůsobení na mobilních zařízeních. Když se to vše dá dohromady, vytvoříte galerii, která bude fungovat bez problémů a bude vypadat skvěle. To je cíl, kterého chcete dosáhnout.