Flexbox vs CSS Grid — Kdy Použít Co
Praktické srovnění obou layoutových systémů. Naučíš se, kdy je Flexbox lepší volbou a kdy je potřeba Grid.
Přečíst článekNauč se tvořit plně responzivní gridy bez media queries. Praktické příklady a vysvětlení, jak fungují auto-fit a auto-fill vlastnosti.
CSS Grid se stal standardem pro moderní web design. Jenže když se naučíš jen základy, pořád si nejsi jistý, kdy přesně použít auto-fit nebo auto-fill. Rozdíl je sice malý, ale důsledky jsou obrovské. Rozdíl mezi těmito dvěma klíčovými vlastnostmi může být pro tvůj projekt naprosto zásadní.
Bez těchto technik se vrací do staré doby — media queries na každém kroku, hromada CSS kódu, a výsledek není ani zdaleka tak pružný. Ale když je ovládneš? Tvůj grid se přizpůsobí každé obrazovce sám od sebe. Žádné triky, žádné komplikace. Jen elegantní, funkční design.
Oba fungují podobně. Oba vytváří sloupce automaticky. Ale jsou rozdíly, a ty mohou zničit tvůj design, pokud je neznáš. Auto-fill vytváří prázdné stopy (track), i když v nich není obsah. Auto-fit je inteligentější — sbalí prázdné stopy a rozprostře zbývající obsah rovnoměrně.
Vytváří sloupce, které pak vyprazdňuje, ale nemění jejich velikost. Pokud máš pouze 3 položky v řádku, který pojme 5 sloupců — zbylé 2 sloupce budou prázdné, ale budou tam.
Sbírá prázdné stopy a rozprostírá obsah. To znamená, že zbývající položky se rozšíří, aby zaplnily dostupný prostor. Výsledek je daleko lepší.
Teď se podívej, jak to vypadá v praxi. Zde je to, co budeš psát:
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
Minimální šířka je 200px. Když je prostor na více sloupců, vytvoří je. Ale prázdné sloupce zůstanou.
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
Stejné nastavení, ale prázdné sloupce se sbalí. Zbývající obsah se rozprostře a zaplní celý prostor.
Vidíš ten rozdíl? Je to jen jedno slovo — auto-fill nebo auto-fit. Ale výsledek je úplně jiný. Při auto-fit se 3 položky rozprostřou, aby vyplnily řádek. Při auto-fill zůstanou na své původní šířce, a zbývající místo zůstane prázdné. Která je lepší? Záleží na tom, co chceš dosáhnout.
Nejlepší část? Můžeš kombinovat auto-fit a auto-fill s dalšími vlastnostmi CSS Grid. Přidej gap, změň align-items, nastav grid-auto-rows. Každá kombinace vytváří nový efekt.
Například: pokud nastavíš grid-auto-rows na 300px a přidáš auto-fit s minmax(250px, 1fr), dostaneš grid, kde se sloupce automaticky přizpůsobí šířce, ale řádky budou vždy 300px vysoké. To je opravdu mocné. Nebo když přidáš place-items: center, tak se veškerý obsah v každé buňce vycentruje. Teď už máš plnou kontrolu.
Začni s jedním sloupcem na mobilu, pak přidej auto-fit na větších obrazovkách. Jednoduchá a efektivní strategie.
Auto-fit je ideální pro galerie. Obrázky se přizpůsobí prostoru bez toho, aby ses musel trápit media queries.
Grid pro hlavní layout, Flexbox pro detaily. Kombinace těchto dvou je neporazitelná.
Chrome DevTools má skvělou Grid inšpekci. Viz přesně, co se děje s tvými stopami a položkami.
Vždy nastav rozumnou minimální šířku v minmax(). Příliš malá čísla budou vypadat divně.
Někdy je auto-fill lepší, někdy auto-fit. Neexistuje univerzální odpověď — záleží na tvém obsahu.
Auto-fit a auto-fill nejsou těžké koncepty. Jsou to jen dva různé způsoby, jak se vypořádat s prázdným místem. Auto-fit je chytřejší — sbírá prázdné stopy a rozprostírá obsah. Auto-fill je tradiční — nechá je tam, jak jsou. To je vlastně vše, co potřebuješ vědět.
Teď už víš, jak to funguje. Příště, když budeš psát CSS Grid, nebudeš se muset ptát sám sebe, kterou vlastnost použít. Budeš vědět. A tvůj design bude vypadat lépe, tvůj kód bude čistší, a nebudeš se už nikdy vracet k hromadě media queries.
“CSS Grid s auto-fit změnil způsob, jakým tvořím responzivní weby. Bez media queries, bez starostí. Prostě funguje.”
— Vývojář z Česka
Máme další články o CSS Gridech, Flexboxu a moderních technikách web designu. Podívej se na související články níže.
Tento článek je vzdělávacím materiálem určeným k seznámení s CSS Grid technikami a vlastnostmi auto-fit a auto-fill. Informace jsou poskytovány tak, jak jsou, bez záruky na správnost nebo úplnost. Obsah webu se může měnit. Vždy ověřuj aktuální dokumentaci na oficiálních zdrojích CSS specifikací (MDN Web Docs, W3C). Názory a příklady v tomto článku odrážejí jeden z možných přístupů k práci s CSS Grid a nemusejí být ideální pro všechny situace. Při implementaci si proveď vlastní testování na různých prohlížečích a zařízeních.