Recommended Articles

Cuevana 3

Middle East Transformed: The Fall of Iran’s Supreme Leader and Regional Power Shift

The assassination of Iran’s Supreme Leader Ali Khamenei in joint U.S.-Israeli strikes marks a historic turning point in Middle Eastern geopolitics, triggering a succession crisis and potentially reshaping the region’s balance of power.

Richard Hayes
Cuevana 3

The Numbers Game: What the June 2025 War Revealed About Iran vs Israel’s Military Might

After the 12-day war in June 2025, the age-old question of who’s more powerful between Iran and Israel got a real-world test. The answer? It’s complicated.

James Whitmore
Cuevana 3

The Iran Nuclear Deal: From Promise to Ashes in a Decade of Diplomatic Failure

Ten years after the Joint Comprehensive Plan of Action promised to contain Iran’s nuclear ambitions, the landmark agreement lies in ruins following military strikes and diplomatic breakdown.

James Whitmore
Cuevana 3

BBC Explores Century-Old Roots of Middle East Conflict in New Radio Series

A new BBC Radio 4 documentary series examines how Britain’s 1917 promise to create a Jewish homeland in Palestine set the stage for decades of conflict.

James Whitmore
Cuevana 3

Czech TV Nova Delivers Comprehensive Dakar Rally 2026 Coverage with Extended Format and Expert Analysis

[[company:TV Nova|TV Nova]] expanded its Dakar Rally coverage for 2026, offering 80-minute episodes and enhanced viewer engagement as the world’s toughest rally concluded in [[place:Saudi Arabia|Saudi Arabia]].

James Whitmore
Cuevana 3

Middle East Explodes as Trump and Netanyahu Launch War on Iran

The U.S. and Israel have launched their biggest military operation since Iraq 2003, killing Iran’s supreme leader and sparking a regional conflict that could reshape the Middle East forever.

James Whitmore

Masonry fotogalerie: Proč ji používá Pinterest a jak ji vytvoříte za 15 minut

Masonry layout patří mezi nejoblíbenější způsoby zobrazení fotogalerií na moderních webech. Tento typ rozvržení, známý především z Pinterestu, umožňuje elegantně zobrazit obrázky různých velikostí bez nevzhledných mezer a prázdných míst. Pokud hledáte způsob, jak vytvořit profesionální responzivní galerii, jste na správném místě.

Co je Masonry layout a proč jej používat

Masonry layout je technika zobrazení obsahu inspirovaná zdivem z kamene nebo cihel. Na rozdíl od klasické mřížky, kde všechny položky mají stejnou výšku, Masonry umožňuje každému prvku mít vlastní rozměry. Prvky se pak dynamicky skládají do sloupců tak, aby využily veškerý dostupný prostor.

Hlavní výhody Masonry layoutu:

  • Efektivní využití prostoru bez prázdných míst
  • Možnost zobrazit obrázky v původních poměrech stran
  • Vizuálně atraktivní a moderní vzhled
  • Perfektní pro portfolia, fotogalerie a produktové katalogy
  • Responzivní chování napříč všemi zařízeními

Tři způsoby implementace Masonry galerie

Pro vytvoření Masonry layoutu existuje několik osvědčených přístupů. Každý má své výhody a hodí se pro jiný typ projektu.

CSS Grid s vlastností masonry

Nejmodernější přístup využívá nativní CSS vlastnost masonry, která je součástí specifikace CSS Grid Layout Module Level Three. Bohužel v době psaní tohoto článku je podpora prohlížečů stále omezená.

Základní syntaxe vypadá takto:

Pro kontejner galerie použijete display: grid s vlastností grid-template-rows nastavenou na masonry. Tento přístup je čistě CSS řešení bez nutnosti JavaScriptu. Sloupce se přizpůsobují automaticky pomocí grid-template-columns s hodnotou repeat(auto-fill, minmax(250px, 1fr)).

Výhodou je minimální kód a výborný výkon. Nevýhodou zatím omezená podpora v Safari a dalších prohlížečích, která vyžaduje fallback řešení.

JavaScript knihovna Masonry.js

Nejpopulárnější a nejspolehlivější řešení představuje knihovna Masonry.js od Davida DeSandra. Tato knihovna je battle-tested a používá ji tisíce webů včetně velkých portálů.

Implementace je velmi přímočará:

Nejprve připojíte knihovnu do projektu, buď přes CDN nebo npm balíček. Poté vytvoříte HTML kontejner s třídou grid a jednotlivé položky s třídou grid-item. JavaScript inicializaci provedete jednoduchým voláním konstruktoru s nastavením šířky sloupců a mezer mezi prvky.

Knihovna automaticky vypočítá optimální pozice všech prvků a přiřadí jim absolutní pozicování. Při změně velikosti okna se layout dynamicky přepočítává.

CSS Column layout

Třetí možností je využití CSS vlastnosti column-count, která vytvoří vícesloupcové rozvržení podobné novinovému layoutu. Tento přístup je nejjednodušší na implementaci.

Nastavíte počet sloupců pomocí column-count nebo šířku sloupce pomocí column-width. Mezery mezi sloupci definujete vlastností column-gap. Důležité je přidat break-inside: avoid pro položky, aby se nerozdělily mezi sloupce.

Výhodou je extrémní jednoduchost a výborná podpora prohlížečů. Nevýhodou je vertikální tok obsahu místo horizontálního, což může být v některých případech nežádoucí.

Praktický návod krok za krokem

Ukážeme si kompletní implementaci pomocí Masonry.js, která nabízí nejlepší kombinaci funkčnosti a kompatibility.

Příprava HTML struktury

Vytvořte základní HTML strukturu s kontejnerem pro galerii. Každý obrázek zabalte do divu s třídou grid-item. Tento obal umožňuje přidat padding, stín nebo jiné stylování bez ovlivnění samotného obrázku.

Pro responzivitu přidejte obrázky s atributem loading=“lazy“ pro odložené načítání. To výrazně zlepší výkon stránky, zejména u galerií s desítkami obrázků.

Stylování pomocí CSS

Kontejner galerie nastavte na relativní pozicování. Jednotlivé položky budou mít šířku definovanou v procentech – například třicet tři procent pro tři sloupce, dvacet pět procent pro čtyři sloupce.

Nezapomeňte na media queries pro responzivní chování. Na mobilních zařízeních můžete zobrazit jeden nebo dva sloupce, na tabletech tři a na desktopu čtyři či více.

Důležité CSS vlastnosti:

  • Box-sizing: border-box pro správné počítání šířek
  • Width: sto procent pro obrázky uvnitř položek
  • Display: block pro odstranění mezery pod obrázky
  • Height: auto pro zachování poměru stran

Inicializace JavaScriptu

Po načtení DOM inicializujte Masonry knihovnu. Můžete použít vanilla JavaScript nebo jQuery podle preference. Klíčové je počkat na načtení všech obrázků pomocí imagesLoaded pluginu, jinak se layout vypočítá špatně.

Nastavte itemSelector na třídu položek, columnWidth na šířku jednoho sloupce a percentPosition na true pro responzivní chování. Gutter definuje mezery mezi položkami.

Optimalizace výkonu a UX

Masonry galerie může při špatné implementaci způsobit problémy s výkonem. Zde jsou osvědčené postupy pro optimalizaci.

Lazy loading obrázků

Načítejte obrázky postupně při scrollování pomocí Intersection Observer API nebo knihovny jako lazysizes. Tím výrazně zkrátíte čas načtení stránky a snížíte spotřebu dat.

Nativní lazy loading pomocí atributu loading=“lazy“ funguje ve většině moderních prohlížečů a nevyžaduje JavaScript. Pro starší prohlížeče implementujte polyfill.

Placeholder a progresivní načítání

Zobrazte placeholdery nebo rozmazané náhledy před načtením plných obrázků. Technika LQIP (Low Quality Image Placeholder) používá miniaturní verzi obrázku, která se postupně nahradí plnou kvalitou.

Další možností je skeleton screen – šedé obdélníky na místě budoucích obrázků. To uživateli jasně komunikuje, že obsah se načítá.

Debouncing při resize

Přepočítávání layoutu při každé změně velikosti okna je náročné na výkon. Implementujte debouncing – techniku, která spustí přepočet až po ukončení změny velikosti okna.

Většina Masonry knihoven má debouncing zabudovaný, ale pokud píšete vlastní řešení, použijte setTimeout s clearTimeout pro odložení funkce.

Responzivní breakpointy

Správné nastavení breakpointů je klíčové pro dobrý uživatelský zážitek na všech zařízeních.

Doporučené nastavení sloupců:

  • Mobil (do 576px): jeden sloupec na celou šířku
  • Větší mobil (576-768px): dva sloupce
  • Tablet (768-992px): tři sloupce
  • Desktop (992-1200px): čtyři sloupce
  • Velký desktop (nad 1200px): pět a více sloupců

Tyto hodnoty upravte podle velikosti vašich obrázků a celkového designu webu. Testujte na reálných zařízeních, ne jen v emulátoru.

Přístupnost a SEO

Fotogalerie musí být přístupná všem uživatelům včetně těch se zrakovým postižením.

Každý obrázek opatřete popisným alt textem. Nepoužívejte obecné popisy jako „obrázek“ nebo „fotka“, ale konkrétní popis obsahu. To pomůže i SEO.

Implementujte klávesovou navigaci pro prohlížení galerie. Uživatelé by měli být schopni procházet obrázky pomocí šipek a otevírat lightbox pomocí Enter.

Pro SEO přidejte structured data ve formátu JSON-LD s typem ImageGallery. To Googlu pomůže lépe pochopit obsah galerie a může vést k zobrazení v obrázkových výsledcích vyhledávání.

Časté problémy a jejich řešení

Při implementaci Masonry layoutu můžete narazit na několik typických problémů.

Překrývající se prvky

Pokud se prvky překrývají nebo mají nesprávné pozice, pravděpodobně jste inicializovali Masonry před načtením obrázků. Použijte imagesLoaded knihovnu nebo počkejte na window.load event.

Layout se nepřepočítává

Po přidání nových položek musíte volat metodu layout() nebo reloadItems(). Některé knihovny to dělají automaticky, jiné vyžadují manuální trigger.

Problémy s animacemi

CSS transitions na položkách mohou kolidovat s Masonry animacemi. Buď použijte vestavěné animace knihovny, nebo vypněte transitionDuration nastavením na nulu.

Alternativy k Masonry layoutu

Masonry není vždy nejlepší volba. Pro některé případy použití existují vhodnější alternativy.

Flexbox galerie funguje skvěle pro obrázky podobných rozměrů. Je jednodušší na implementaci a nevyžaduje JavaScript. Použijte display: flex s flex-wrap: wrap a justify-content: space-between.

CSS Grid galerie nabízí přesnou kontrolu nad layoutem. Můžete definovat konkrétní pozice prvků a vytvářet komplexní asymetrické mřížky. Hodí se pro redakční weby a portfolia.

Justified gallery zarovná obrázky do řádků se stejnou výškou, podobně jako Google Photos. Výsledek je vizuálně uspořádanější než Masonry, ale méně dynamický.

Závěrečné tipy pro profesionální výsledek

Masonry galerie vypadá nejlépe s kvalitními fotografiami v dostatečném rozlišení. Optimalizujte obrázky pomocí moderních formátů jako WebP nebo AVIF pro menší velikost souboru při zachování kvality.

Přidejte lightbox funkci pro zobrazení obrázků na celou obrazovku. Knihovny jako GLightbox nebo PhotoSwipe nabízejí plynulé animace a touch gesta.

Implementujte filtrování nebo kategorie, pokud máte velké množství obrázků. Uživatelé ocení možnost zobrazit pouze relevantní obsah.

Nezapomeňte na loading indikátor při načítání obrázků. Jednoduchý spinner nebo progress bar výrazně zlepší vnímaný výkon galerie.

S těmito znalostmi jste připraveni vytvořit profesionální Masonry fotogalerii, která bude fungovat perfektně na všech zařízeních a zaujme vaše návštěvníky. Začněte s jednoduchým prototypem a postupně přidávejte pokročilé funkce podle potřeb vašeho projektu.