Lekce 1.1

CSS Grid do hloubky

Linie a souřadnice v mřížce, rozvržení nakreslené jmény oblastí, řádky, které dokreslí prohlížeč, a galerie, jež se přizpůsobí sama.

Linie a umisťování položek

Když v kontejneru vzniknou sloupce a řádky, vzniknou spolu s nimi linie – čáry, které mřížku dělí. Jsou to zábradlí, mezi která se položky věší, a mřížka si je sama očísluje. Tři sloupce mají čtyři svislé linie, dva řádky tři vodorovné.

Mřížka o třech sloupcích a dvou řádcích. Nahoře jsou svislé linie očíslované 1 až 4, pod mřížkou stejné linie se zápornými čísly -4 až -1, vlevo vodorovné linie 1 až 3. V horním řádku sedí položka od linie 2 do linie 4 přes dva sloupce, ve druhém řádku položka v prvním sloupci.

Číslují se linie, ne dráhy, a odtud pramení skoro každý omyl v tomhle tématu. Sloupec číslo jedna je to, co leží mezi linií 1 a linií 2.

Souřadnice položky

Položce řekneme, mezi kterými liniemi má sedět, vlastnostmi grid-column a grid-row. Píšou se na potomka, ne na kontejner, a hodnoty se oddělují lomítkem jako „od / do“:

css
.movie--premiere {
  /* od svislé linie 2 do svislé linie 4, tedy přes dva sloupce */
  grid-column: 2 / 4;
  /* od vodorovné linie 1 do linie 2, tedy jeden řádek */
  grid-row: 1 / 2;
}

Konec se dá vynechat. Samotné grid-column: 2 znamená „začni na linii 2 a zaber jednu dráhu“, což je totéž jako 2 / 3.

Kolik dráh zabrat

Druhou možností je neříkat, kde položka končí, ale kolik místa si má vzít. K tomu slouží klíčové slovo span:

css
.movie--premiere {
  /* začni na linii 2 a zaber dva sloupce */
  grid-column: 2 / span 2;
}

A když nezáleží ani na tom, kde začne, stačí span samotné:

css
.movie--premiere {
  /* zaber dva sloupce, kdekoli se najdou */
  grid-column: span 2;
}

Tenhle zápis je v praxi nejčastější, protože se neváže na konkrétní čísla – funguje i v mřížce, které sloupců přibude nebo ubude.

Počítání od konce

Linie se dají číslovat i zprava, resp. odspodu. Poslední linie je -1, předposlední -2 a tak dál. Nejužitečnější kombinace celé kapitoly vypadá takhle:

css
.movie--premiere {
  /* od první linie do poslední, tedy přes celou šířku mřížky */
  grid-column: 1 / -1;
}

Ať má mřížka tři sloupce nebo sedm, tahle položka se roztáhne přes všechny. S span 2 bychom museli počet hlídat sami.

Pozor

Záporná čísla míří na linie explicitní mřížky, tedy té, kterou jsme nakreslili. V mřížce, kde si sloupce dokresluje prohlížeč, -1 neukazuje tam, kde bychom čekali. Kdy k tomu dochází, si řekneme v kapitole o implicitní mřížce.

Obojí naráz

Čtyři souřadnice se dají zapsat jednou vlastností grid-area v pořadí začátek řádku / začátek sloupce / konec řádku / konec sloupce:

css
.movie--premiere {
  grid-area: 1 / 2 / 2 / 4;
}

Osobně si myslím, že se tenhle tvar čte mizerně – pořadí čísel si nikdo nepamatuje a při čtení cizího kódu se v něm ztratíte. Uvádíme ho hlavně proto, abyste ho poznali. Vlastnost grid-area má totiž ještě druhou podobu, se jménem místo čísel, a ta stojí za celou příští kapitolou.

Bonus

Linie se dají i pojmenovat, rovnou při kreslení mřížky: grid-template-columns: [start] 1fr [content-start] 2fr [end]. Položka se pak umístí přes grid-column: content-start / end. Vyhledejte si tenhle zápis v průvodci na CSS-Tricks a rozmyslete si, kdy je čitelnější než čísla.