Obsah
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
CSS grid je sada vlastností pro tvorbu layoutu vsazeného do pravidelné mřížky.
Grid můžeme definovat jako mřížku v obou směrech – v řádcích i sloupcích.
Vlastnost grid-template-columns definuje počet a šířku sloupců v gridu.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em, fr atd.
.container {
display: grid;
grid-template-columns: 100px 200px 100px;
}
Tento kód vytvoří grid se třemi sloupci, kde první a třetí sloupec mají šířku 100 pixelů a druhý sloupec má šířku 200 pixelů.
Vlastnost grid-template-rows definuje počet a výšku řádků v gridu.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em, fr atd.
.container {
display: grid;
grid-template-rows: 100px 150px;
}
Tento kód vytvoří grid se dvěma řádky, kde první řádek má výšku 100 pixelů a druhý řádek má výšku 150 pixelů.
Vlastnost grid-gap definuje mezery mezi řádky a sloupci v gridu.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em atd.
.container {
display: grid;
grid-gap: 10px;
}
Tento kód vytvoří mezeru 10 pixelů mezi všemi řádky a sloupci v gridu.
Vlastnost grid-template-areas umožňuje pojmenovat oblasti v gridu a usnadňuje tak umisťování položek do těchto oblastí.
Hodnoty jsou zadány jako řetězce, kde každý řetězec představuje řádek v gridu a názvy oblastí jsou odděleny mezerami.
.container {
display: grid;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
}
Tento kód vytvoří grid se třemi řádky a dvěma sloupci, kde první řádek obsahuje oblast "header" přes oba sloupce, druhý řádek obsahuje oblasti "sidebar" a "content", a třetí řádek obsahuje oblast "footer" přes oba sloupce.
Vlastnosti grid-auto-rows a grid-auto-columns definují výšku řádků a šířku sloupců, které jsou automaticky přidávány do gridu, pokud počet položek přesahuje počet definovaných řádků nebo sloupců.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em, fr atd.
.container {
display: grid;
grid-auto-rows: 100px;
grid-auto-columns: 150px;
}
Tento kód zajistí, že každý automaticky přidaný řádek bude mít výšku 100 pixelů a každý automaticky přidaný sloupec bude mít šířku 150 pixelů.
Zde je příklad, který kombinuje všechny výše uvedené vlastnosti:
.container {
display: grid;
gap: 0.85em;
grid-template-columns: 1fr 2fr 1fr ;
grid-template-rows: auto 1fr auto;
}
Tento kód vytvoří grid s třemi sloupci a třemi řádky kde sloupce mají šířky v poměru 1:2:1
Sloupce mají šířky v poměru 1:2:1 a zabírají veškerý dostupný prostor
Tři řádky. První dle obsahu, druhý zbytetk dostupné výšky, třetí výška dle obsahu
Mezera mezi položkami je nastavena na 0.85em.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima deleniti odio possimus deserunt. Incidunt officia nisi dicta eaque similique, ex explicabo, illo corrupti sequi maiores soluta quas debitis necessitatibus itaque!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ab, doloremque beatae.
Nejezchleba
Není nutno, není nutno, aby bylo přímo veselo.
Hlavně nesmí býti smutno, natož, aby se brečelo.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet blanditiis facilis amet maxime quis libero soluta quidem eius minima ducimus, pariatur, perspiciatis expedita cumque culpa quaerat dicta a! Iure, voluptatum.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sit esse commodi mollitia harum illo sint itaque magni alias. Aliquid officia molestias odit fuga quo deserunt culpa delectus iusto veniam ex.
Zde je příklad použití vlastnosti grid-template-areas pro vytvoření layoutu s hlavičkou, postranním panelem, obsahem a patičkou:
.container_1{
display: grid;
grid-template-areas:
'header header header'
'sidebar content content'
'footer footer footer';
}
Tento kód vytvoří grid s třemi řádky a třemi sloupci
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.
Ukázka použití grid-template-areas v praxi.
.container_2{
display: grid;
grid-template-areas:
'header header header header'
'leva main main pravy'
'pata pata pata pata';
gap: 10px;
grid-template-rows: auto 1fr auto;/* tři řádky, první a třetí se přizpůsobí obsahu, druhý zabere zbytek dostupného prostoru */
}
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
Poznámka: Nepříjemnou vlastností totoho příkladu je, že se šířka sloupců je automatická a přízpůsobujese obsahu.
Pro lepší kontrolu nad šířkou sloupců je vhodné kombinovat vlastnost grid-template-areas s vlastnostmi grid-template-columns a grid-template-rows.
Také je možné použít vlastnosti grid-template-columns a grid-template-rows pro přesné nastavení šířek a výšek sloupců a řádků.
Hodnoty šířky sloupců a výšky řádků mohou být definovány pomocí jednotek jako px, em, rem nebo fr (pro poměrné rozdělení prostoru).
Pro šířku se však osvědčila hodnota vw, která odpovídá šířce viewportu.
Například:
.container_3{
display: grid;
grid-template-areas:
'header header header header'
'leva main main pravy'
'pata pata pata pata';
grid-template-columns: 20vw 1fr 1fr 20vw;
grid-template-rows: auto 1fr auto;
}
Tento kód vytvoří grid s pevnou šířkou levého a pravého sloupce 20% šířky viewportu a střední sloupce zabírají zbytek dostupného prostoru.
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
Poznámka: U odstavce je třeba omezit šířku na 80% šířky viewportu (max-width:80vw;).
Poznámka: Pozor na nízká rozlišení, obsah se pak může nepříjemně zúžit :-)
Tento příklad ukazuje, jak vytvořit layout s hlavičkou, dvěma postranními panely, hlavním obsahem a patičkou pomocí vlastnosti span pro určení počtu sloupců nebo řádků, které má každá položka zabírat.
Hlavička a patička zabírají všechny sloupce (span 5), levý a pravý postranní panel zabírají tři řádky (span 3) a hlavní obsah zabírá tři sloupce a tři řádky (span 3x3).
.parent {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(5, 1fr);
gap: 8px;
}
.div1 {
grid-column: span 5 / span 5;
}
.div2 {
grid-row: span 3 / span 3;
grid-row-start: 2;
}
.div3 {
grid-row: span 3 / span 3;
grid-column-start: 5;
grid-row-start: 2;
}
.div4 {
grid-column: span 5 / span 5;
grid-column-start: 1;
grid-row-start: 5;
}
.div5 {
grid-column: span 3 / span 3;
grid-row: span 3 / span 3;
grid-column-start: 2;
grid-row-start: 2;
}
Poznámka: Vlastnosti `grid-column` a `grid-row` používají syntaxi 'span / span' pro určení počtu sloupců nebo řádků, které má každá položka zabírat.
Takovýto layout lze vytvořit pomocí vlastnosti `span`.
V gridu se počítají mřížky.
První vodorovná mřížka je na pozici O a má číslo 1
První svislá mřížka je na pozici 0 a má číslo 1
CSS grid je sada vlastností pro tvorbu layoutu vsazeného do pravidelné mřížky.
Grid můžeme definovat jako mřížku v obou směrech – v řádcích i sloupcích.
Vlastnost grid-template-columns definuje počet a šířku sloupců v gridu.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em, fr atd.
.container {
display: grid;
grid-template-columns: 100px 200px 100px;
}
Tento kód vytvoří grid se třemi sloupci, kde první a třetí sloupec mají šířku 100 pixelů a druhý sloupec má šířku 200 pixelů.
Vlastnost grid-template-rows definuje počet a výšku řádků v gridu.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em, fr atd.
.container {
display: grid;
grid-template-rows: 100px 150px;
}
Tento kód vytvoří grid se dvěma řádky, kde první řádek má výšku 100 pixelů a druhý řádek má výšku 150 pixelů.
Vlastnost grid-gap definuje mezery mezi řádky a sloupci v gridu.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em atd.
.container {
display: grid;
grid-gap: 10px;
}
Tento kód vytvoří mezeru 10 pixelů mezi všemi řádky a sloupci v gridu.
Vlastnost grid-template-areas umožňuje pojmenovat oblasti v gridu a usnadňuje tak umisťování položek do těchto oblastí.
Hodnoty jsou zadány jako řetězce, kde každý řetězec představuje řádek v gridu a názvy oblastí jsou odděleny mezerami.
.container {
display: grid;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
}
Tento kód vytvoří grid se třemi řádky a dvěma sloupci, kde první řádek obsahuje oblast "header" přes oba sloupce, druhý řádek obsahuje oblasti "sidebar" a "content", a třetí řádek obsahuje oblast "footer" přes oba sloupce.
Vlastnosti grid-auto-rows a grid-auto-columns definují výšku řádků a šířku sloupců, které jsou automaticky přidávány do gridu, pokud počet položek přesahuje počet definovaných řádků nebo sloupců.
Hodnoty můžeme zadat v různých jednotkách, například v pixelech, procentech, em, fr atd.
.container {
display: grid;
grid-auto-rows: 100px;
grid-auto-columns: 150px;
}
Tento kód zajistí, že každý automaticky přidaný řádek bude mít výšku 100 pixelů a každý automaticky přidaný sloupec bude mít šířku 150 pixelů.
Zde je příklad, který kombinuje všechny výše uvedené vlastnosti:
.container {
display: grid;
gap: 0.85em;
grid-template-columns: 1fr 2fr 1fr ;
grid-template-rows: auto 1fr auto;
}
Tento kód vytvoří grid s třemi sloupci a třemi řádky kde sloupce mají šířky v poměru 1:2:1
Sloupce mají šířky v poměru 1:2:1 a zabírají veškerý dostupný prostor
Tři řádky. První dle obsahu, druhý zbytetk dostupné výšky, třetí výška dle obsahu
Mezera mezi položkami je nastavena na 0.85em.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima deleniti odio possimus deserunt. Incidunt officia nisi dicta eaque similique, ex explicabo, illo corrupti sequi maiores soluta quas debitis necessitatibus itaque!
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ab, doloremque beatae.
Nejezchleba
Není nutno, není nutno, aby bylo přímo veselo.
Hlavně nesmí býti smutno, natož, aby se brečelo.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet blanditiis facilis amet maxime quis libero soluta quidem eius minima ducimus, pariatur, perspiciatis expedita cumque culpa quaerat dicta a! Iure, voluptatum.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sit esse commodi mollitia harum illo sint itaque magni alias. Aliquid officia molestias odit fuga quo deserunt culpa delectus iusto veniam ex.
Zde je příklad použití vlastnosti grid-template-areas pro vytvoření layoutu s hlavičkou, postranním panelem, obsahem a patičkou:
.container_1{
display: grid;
grid-template-areas:
'header header header'
'sidebar content content'
'footer footer footer';
}
Tento kód vytvoří grid s třemi řádky a třemi sloupci
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.
Ukázka použití grid-template-areas v praxi.
.container_2{
display: grid;
grid-template-areas:
'header header header header'
'leva main main pravy'
'pata pata pata pata';
gap: 10px;
grid-template-rows: auto 1fr auto;/* tři řádky, první a třetí se přizpůsobí obsahu, druhý zabere zbytek dostupného prostoru */
}
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
Poznámka: Nepříjemnou vlastností totoho příkladu je, že se šířka sloupců je automatická a přízpůsobujese obsahu.
Pro lepší kontrolu nad šířkou sloupců je vhodné kombinovat vlastnost grid-template-areas s vlastnostmi grid-template-columns a grid-template-rows.
Také je možné použít vlastnosti grid-template-columns a grid-template-rows pro přesné nastavení šířek a výšek sloupců a řádků.
Hodnoty šířky sloupců a výšky řádků mohou být definovány pomocí jednotek jako px, em, rem nebo fr (pro poměrné rozdělení prostoru).
Pro šířku se však osvědčila hodnota vw, která odpovídá šířce viewportu.
Například:
.container_3{
display: grid;
grid-template-areas:
'header header header header'
'leva main main pravy'
'pata pata pata pata';
grid-template-columns: 20vw 1fr 1fr 20vw;
grid-template-rows: auto 1fr auto;
}
Tento kód vytvoří grid s pevnou šířkou levého a pravého sloupce 20% šířky viewportu a střední sloupce zabírají zbytek dostupného prostoru.
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iste quibusdam aperiam atque eaque aliquid nisi, nam tenetur doloremque excepturi, non ex sed nihil id eos veniam doloribus animi blanditiis beatae.
Poznámka: U odstavce je třeba omezit šířku na 80% šířky viewportu (max-width:80vw;).
Poznámka: Pozor na nízká rozlišení, obsah se pak může nepříjemně zúžit :-)
Tento příklad ukazuje, jak vytvořit layout s hlavičkou, dvěma postranními panely, hlavním obsahem a patičkou pomocí vlastnosti span pro určení počtu sloupců nebo řádků, které má každá položka zabírat.
Hlavička a patička zabírají všechny sloupce (span 5), levý a pravý postranní panel zabírají tři řádky (span 3) a hlavní obsah zabírá tři sloupce a tři řádky (span 3x3).
.parent {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(5, 1fr);
gap: 8px;
}
.div1 {
grid-column: span 5 / span 5;
}
.div2 {
grid-row: span 3 / span 3;
grid-row-start: 2;
}
.div3 {
grid-row: span 3 / span 3;
grid-column-start: 5;
grid-row-start: 2;
}
.div4 {
grid-column: span 5 / span 5;
grid-column-start: 1;
grid-row-start: 5;
}
.div5 {
grid-column: span 3 / span 3;
grid-row: span 3 / span 3;
grid-column-start: 2;
grid-row-start: 2;
}
Poznámka: Vlastnosti `grid-column` a `grid-row` používají syntaxi 'span / span' pro určení počtu sloupců nebo řádků, které má každá položka zabírat.
Takovýto layout lze vytvořit pomocí vlastnosti `span`.
V gridu se počítají mřížky.
První vodorovná mřížka je na pozici O a má číslo 1
První svislá mřížka je na pozici 0 a má číslo 1