- layout webové stránky určuje, jak jsou různé prvky na stránce uspořádány
Grid
- zavádí dvoudimenzionální mřížku (grid), do které je možné rozmisťovat prvky
Základní pojmy
- grid kontejner - základní element obsahující mřížku
- čáry - vymezují buňky a oblasti (seskupení buněk)
- řádky a sloupce - speciální oblasti, řádek/sloupec buněk
- hlavní osa - osa x
- příčná osa - osa y
- osy určují jakým způsobem budou prvky v mřížce zarovnány
- čáry nejsou zobrazeny pouze vymezují oblasti do kterých jdou umístit elementy
- Vytvoření mřížky(gridu): elementu nastavíme
display: grid
(případnědisplay: inline-grid
), to vytvoří mřížku a do ní následně rozmístíme elementy
HTML pro příklady
Vytvoření mřížky
Ukázka vytvoření gridu
Obrázek mřížky pro předchozí kód
- index čáry - pří vytvoření mřížky
Index čáry
- čáry jsou indexované vzestupně zleva doprava na hlavní ose a na příčné z hora dolů
- současně zprava doleva od do a na příčné zdola nahoru
- indexy odpovídají i indexům sloupce a řádku
- možnost čáry pojmenovat
- možnost přidání více jmen do hranatých závorek pro jednu čáru
Jednotka fraction - fr
- náhrada pixelů
- přizpůsobuje se různým zobrazovacím zařízením
- určuje poměrnou část nespecifikovaného místa
Příklady
fr
Automatické generování mřížky
- možné generovat automaticky pomocí funkce
repeat()
- pouze jeden
repeat()
v deklaraci
Příklady
- pří automatickém generování můžeme nechat prohlížeč rozhodnout kolikrát má daný vzor opakovat,
- nelze použít s jednotkou
fr, min-content, max-content
- možné použít funkci
minmax()
- nelze použít s jednotkou
Auto-fill
- je vzor zopakovaný tolikrát, kolikrát to umožní daný prostor, přičemž je preferováno vložení nové buňky před zvětšením
Auto-fit
- je vzor zopakovaný tolikrát, kolikrát to umožní daný prostor, přičemž je preferováno zvětšení buňky před vložením nové
Pojmenovávání oblastí
- pomocí
grid-template-areas
Zkrácený zápis
existuje ještě zkrácený zápis pro
grid-template
a progrid
(dobré pro jednoduché mřížky)
Umístění elementů do mřížky
- po vytvoření můžeme umisťovat jednotlivé elementy
Rozšíření HTML
- vymezení oblasti čarami
grid-row-start, grid-row-end, grid-column-start a grid-column-end
- zkrácená
grid-row, grid-column
- možnost umístit do konkrétního řádku nebo sloupce
grid-row, grid-column
Příklad
Výsledek:
- možnost také umístit do pojmenované oblasti (grid-template-area) pokud ji máme pojmenovanou
grid-area
grid-area
- možnost také použít na indexy čar
- možnost určit jen začínající čáru a počet buněk
- pomocí
span
- pomocí
Implicitní mřížka
- je generovaná, pokud umístíme element mimo explicitní mřížku
grid-auto-rows (columns)
Zarovnávání
- mezery mezi řádky a sloupci
column-gap
row-gap
gap
- zarovnání v mřížce
justify-items
- zarovnání všech buněk na hlavní osealign-items
- zarovnání všech buněk na příčné osejustify-content
- zarovnání sloupců na hlavní osealign-content
- zarovnání řádků na příčné ose
Flexbox
- automatické rozmístit elementy do řádků nebo sloupců
- flex kontejner - obsahuje flex položky
- hlavní osa - osa x (u řádku, u sloupce naopak)
- příčná osa - osa y (u řádku, u sloupce naopak)
HTML pro příklady
-
pro to aby se kontejner choval jako flex
display: flex
-
elementy se zarovnávají dle hlavní osy
-
flex-direction
- změna směru hlavní osy -
flex-wrap
- zalomení elementů ve flex kontejneru
Umístění elementů
justify-content
- umístění položek flexboxu na hlavní osealign-content
- umístění položek na příčné osealign-items
- zarovnání položek na vedlejší ose
Položky kontejneru
-
flex-grow
- řídí zvětšení položek kontejneru na hlavní oseflex-grow: 2;
se označuje jako relativní flex. element má 2x více místa
-
flex-shrink
- protiklad- udává, jak mají být zmenšeny, pokud se nevejdou do kontejneru
-
výchozí hodnota je 1
-
align-self
- možnost zarovnat každou položku samostatně -
flex-basis
- možné určit výchozí rozměr položky (hodnotaauto
→ z flex modelu) -
možnost zapsání všech předchozích položek zkráceně
- absolutní flex -
flex-basis: 0
se spojenímflex-grow
lze docílit chování kdy rozdělení probíhá na základě `flex-grow.
Pozicování elementů
- změna jeho umístění oproti normal flow na stránce. K tomu účelu slouží vlastnost
position
. - Hodnoty position
static
- výchozí hodnota, pozice určena normal flowrelative
- relativní pozice k jeho normal flow, místo které zabírá je ponecháno prázdnéabsolute
- absolutní pozicování umístí prvek relativně k jeho nejbližšímu předkovi sposition: relative;
.fixed
- pevná pozice vzhledem k viewportusticky
- kombinace relativního a fixního pozicování (relativní dokud není odrolován, pak fixní)
- pokud je element
relative, fixed, absolute nebo sticky
- možnost nastavit
top, right, bottom, left
- určuje pozici elementu vzhledem k počátečním souřadnicím (liší se podle typu pozicování)
- možnost nastavit
Relativní pozicování
- počátek souřadnicového systému je dán normal flow a je umístěn v levém horní rohu elementu pro
top
aleft
, probottom
aright
pravý dolní roh
Absolutní pozicování
top
,left
- leví horní roh webové stránky nebo rodičovského elementu s nastavenou vlastnostiposition
bottom
,right
- stejné jen praví dolní roh
Fixní pozicování
- pozicování dle prohlížeče. (levý horní roh a pravý dolní roh)
Sticky pozicování
- chová se jako relativně pozicováný ale pokud je odrolován mimo okno začne se chovat fixně
Překrytí elementů
- překrytí řídí normal flow
- Změnit pořadí překrytí je možné pomocí
z-index
- hodnota je celé číslo (i záporné)
- větší číslo překryje menší
Grid a Flexbox
Grid
- základem je grid kontejner, obsahující mřížku pro rozmístění prvků
- v CSS musíme nastavit
display: grid
nebodisplay: inline-grid
- určen čárami, které vymezují buňky a oblasti (řádky a sloupce)
- jednotlivé oblasti lze pojmenovat
- osy určují jakým způsobem budou prvky v mřížce zarovnány
- osy nejsou zobrazeny pouze vymezují prostor pro jednotlivé elementy
- vždy hlavní + vedlejší osa
Flexbox
- základem je flex container, který obsahuje flex položky
- v CSS musíme nastavit
display: flex
- sloupec a řádek - vždy hlavní + vedlejší osa
Pomůcka pro vlastnosti Gridu a Flexboxu:
- zarovnání obsahu kontejneru na hlavní ose provádí vlastnosti justify-* a zarovnání na příčné ose se provádí vlastnosti align-*
- zarovnání všech položek určují vlastnosti *-items, distribuci volného místa (mezery) mezi položkami určuje vlastnost *-content a zarovnání samostatné položky určuje *- self
Pozicování
je změna umístění elementu (oproti normal flow) na stránce
vlastnost
position
:
static
- výchozí pozice určená normal flowrelative
- relativní vzhled k flow, místo, které element zabíral je prázdnéabsolute
- absolutní pozice vzhledem k oknu prohlížeče nebo prvnímu absolutně, relativně či fixně pozicovanému rodičovskému elementu, místo je použité pro jiné elementyfixed
- pevná pozice vzhledem k viewportu prohlížečesticky
- kombinace relativní a fixní pozice (dokud není odrolováno)
Navigace
Předchozí: Základy správného psaní CSS kódu - typické chyby a metodiky Následující: Responzivní design Celý okruh: 2. Informační technologie