Toto je 18. díl seriálu Začínáme s HTML, pokud se dostatečně neorientujete, zkuste předchozí díl či díl první.
Toto je 18. díl seriálu Začínáme s HTML, pokud se dostatečně neorientujete, zkuste předchozí díl či díl první.
Flexbox je nová možnost tvorby layoutu webu. Slovíčko flex znamená v překladu pružný, což znamená že flexboxy jsou pružné elementy designu webu. Tvorba layoutu na flexboxu je jednodušší v tom, že není potřeba počítat s procenty a i případné přehazování prvků je hračkou. V následujícím příkladu si ukážeme, jak zle vytvořit snadno třísloupcový layout se sloupci 1/4, 1/2 a 1/4 šířky.
#container {display: flex;}.sidebar-1 {flex: 1;padding: 10px;border: 1px solid #000;}.sidebar-2 {flex: 1;padding: 10px;border: 1px solid #000;}.central {flex: 2;padding: 10px;border: 1px solid #000;}p{font-size: 16px;}h1 {font-size: 24px;margin-top: 20px;margin-bottom: 20px;}
<!DOCTYPE html><html lang="cs-CZ"><head><meta charset="utf-8"><title>Ukázka flexboxu</title></head><body><h1>Ukázka flexboxu</h1><div id="container"><div class="sidebar-1"><p>Obsah prvního sloupce</p></div><div class="central"><p>Obsah prostředního sloupce</p></div><div class="sidebar-2"><p>Obsah třetího sloupce</p></div></div></body></html>
Pokud bychom chtěli sidebar-2 přesunout úplně na začátek layoutu, stačí zapsat .sidebar-2 {order: -2;}. Pro názornost praktická ukázka.
#container {display: flex;}.sidebar-1 {flex: 1;padding: 10px;border: 1px solid #000;}.sidebar-2 {flex: 1;padding: 10px;border: 1px solid #000;order: -2; /* zmena poradi */}.central {flex: 2;padding: 10px;border: 1px solid #000;}p{font-size: 16px;}h1 {font-size: 24px;margin-top: 20px;margin-bottom: 20px;}
<!DOCTYPE html><html lang="cs-CZ"><head><meta charset="utf-8"><title>Ukázka flexboxu s přehozením prvku layoutu</title></head><body><h1>Ukázka flexboxu s přehozením prvku layoutu</h1><div id="container"><div class="sidebar-1"><p>Obsah prvního sloupce</p></div><div class="central"><p>Obsah prostředního sloupce</p></div><div class="sidebar-2"><p>Obsah třetího sloupce</p></div></div></body></html>
Pro definici sloupců a řádků slouží flex-direction.
Zápis | Význam |
---|---|
flex-direction: column | vykreslení ve sloupci |
flex-direction: column-reverse | vykreslení ve sloupci v obráceném pořadí |
flex-direction: row | vykreslení v řádku ( výchozí ) |
flex-direction: row-reverse | vykreslení v řádku v obráceném pořadí |
Zarovnání položek lze udělat přes align-items.
Zápis | Význam |
---|---|
align-items: center | zarovnání na střed |
align-items: flex-start | zarovnání zleva |
align-items: flex-end | zarovnání zprava |
align-items: stretch | roztažení položek na stejnou šířku |
Zarovnání položek vodorovně zapíšeme přes justify-content. Používá se jen u zobrazení v řádku.
Zápis | Význam |
---|---|
justify-content: flex-start | zarovnání zleva |
justify-content: flex-end | zarovnání zprava |
justify-content: center | zarovnání na střed |
justify-content: space-between | stejnoměrné rozprostření po prostoru |
justify-content: flex-around | stejnoměrné rozprostření po prostoru, jen se nechá prostor i na krajích |
Občas je potřeba obsah díky množství zalomit. K tomuto účelu slouží flex-wrap.
Zápis | Význam |
---|---|
flex-wrap: wrap | zalomení obsahu |
flex-wrap: wrap-reverse | zalomení obsahu v obráceném pořadí |
flex-wrap: nowrap | nic se nezalomí |
Vždy je potřeba nadefinovat kontejner a pak jednotlivé prvky flexboxu. Asi je vhodné zmínit, že flexbox je určen pro prvky v layoutu jako jsou formuláře, menu, stránkování atd. U pomalejších zařízeních a případně u pomalých internetových připojeních se vykresluje pomaleji.