Cookies

Na naší webové stránce používáme soubory cookies pro její správné fungování, přizpůsobení analytických dat a dynamiky obsahu pro uživatele. Více informací o cookies.

Potvrzením zároveň ukládáte souhlas se zpracováním osobních údajů v rámci nařízení GDPR.

CSS grid

Typ chování prvku
Předchozí Následující

#1 Rozložení typu grid

Rozložení grid, česky mřížka, je typ rozložení, které spočívá v rozčlenění prvku na mřížku a následné ukládání prvků do částí mřížky, do jednotlivých buněk.

Jedná se o druhý nejčastěji používaný typ rozložení, hned po flexboxu; také se zapisuje do vlastnosti display, tedy display: grid;

#2 Základy

Rozložení typu grid se přiděluje hodnotou grid (případně inline-grid pro prvek, který má být inline) do vlastnosti display.

#mrizka {
 display: grid;
}

Mřížka se skládá z dvou částí – kontejneru, který se dále rozděluje na sloupce, řádky a mezery, a položky, tedy vnořené prvky.

Sloupce, v CSS jako columns, je vertikální rozdělení kontejneru na úseky, zatímco řádky, anglicky rows, dělí kontejner na horizontální úseky. Mezi jednotlivé řádky i sloupce lze nastavit mezery pomocí vlastností – column-gap (pro sloupce) a row-gap (pro řádky), případně je lze zkombinovat do zkrácené vlastnosti gap.

Mezi jednotlivými políčky v mřížce se nacházejí také imaginární linky, anglicky lines, které označují začátky a konce prvku na obou osách mřížky. Pokud chceme, aby prvek začínal v druhém řádku a končil ve čtvrtém, použijeme následující kód:

#prvek {
 grid-column-start: 2;
 grid-column-end: 5;
}

Na první pohled se může zdát, že prvek se bude rozpínat od druhého do pátého řádku, avšak prvek se rozpíná od druhé do páté linky, tedy na řádcích 2, 3 a 4, které se nacházejí mezi linkami 2 a 5.

#3 Kontejner

Grid kontejner, nebo-li obal mřížky, je prvek, který seskupuje prvky, na které chceme rozložení grid aplikovat. Základní vlastností je display: flex;, která na prvek aplikuje grid. Dále se kontejneru přidělují vlastnosti, které určují jeho chování:

grid-template-*

Vlastnosti s prefixem grid-template jsou nejčastěji používanými vlastnostmi pro nastavení rozložení prvků v mřížce.

Vlastnost grid-template-columns definuje počet sloupců a velikost každého sloupce v mřížce. Její hodnotou může být „nekonečný“ seznam číselných i slovních hodnot, které vyjadřují šířky sloupců (a zároveň se počtem deklarací zvyšuje také počet sloupců). V následujícím příkladě se vytvoří dvě mřížky – jedna 4 sloupci, z nichž každý má jiné rozměry a druhá se třema sloupci se stejnými.

#mrizka1 {
 display: grid;
 grid-template-columns: 150px 30px 50px 80px;
}
#mrizka2 {
 display: grid;
 grid-template-columns: 60px 60px 60px;
}

Pro zjednodušení práce, lze použít funkci repeat(), která opakuje n-krát výraz. Předchozí kód pro prvek s identifikátorem #mrizka2 lze nahradit tímto:

#mrizka2 {
 display: grid;
 grid-template-columns: repeat(3, 60px);
 /* Zopakuje 3krát 60 pixelů */
}

Totožně to také funguje (jak samostatné hodnoty, tak funkce repeat()) pro vlastnost grid-template-rows, která definuje řádky.

Poznámka: Pokud počet vnořených prvků převýší počet sloupců (nebo řádků), automaticky se vytvoří další řádek (nebo sloupec), do kterého se přebývající prvky automaticky vloží.

#4 Položky

Položky u rozložení typu grid označují prvky, které se nacházejí v prvku, který má vlastnost display: grid;. Samotné položky lze také stylovat, aby se přizpůsobovali vně kontejneru. Mohou mít následující vlastnosti:

Pozice prvku

Vlastnosti s prefixy grid-column a grid-row ovládají pozici prvku v mřížce na obou osách. Zkrácené stejnojmenné vlastnosti – grid-column a grid-row – slučují jim relativní vlastnosti pomocí lomítka /. Existuje také ještě kratší verze, vlastnost grid-area, která spojuje obě zkrácené verze dohromady (v pořadí – počáteční linka sloupce, počáteční linka řádku, konečná linka sloupce a konečná linka řádku)

V následujícím příkladu je prvek s identifikátorem .prvek, který se bude rozpínat přes 3 políčka na šířku a 4 na výšku, přičemž se bude nacházet na horizontálním středu a o jeden řádek níže pod začátkem mřížky. Použity jsou samostatné vlastnosti:

#mrizky {
 display: grid;
 grid-template-columns: repeat(5, 100px);
}
.prvek {
 grid-column-start: 2;
 grid-column-end: 5;
 grid-row-start: 2;
 grid-row-end: 6;
}

Prvek s třídou .prvek lze také zapsat takto (pomocí zkrácených vlastností):

.prvek {
 grid-column: 2 / 5;
 grid-row: 2 / 6;
}

Anebo s vlastností grid-area takto:

.prvek {
 grid-area: 2 / 2 / 5 / 6;
}
Poznámka: Do vlastnosti grid-area se nejprve uvádí počátky (první dvě čísla) a poté konce (poslední dvě čísla).