Flexbox, plným názvem Flexible Box Module, je nástroj CSS, který umožňuje efektivní rozložení, zarovnání a distribuci prostoru mezi položkami v kontejneru, i když jejich velikost je neznámá nebo se dynamicky mění. Jeho hlavním cílem je poskytnout flexibilnější a přesnější způsob uspořádání, zarovnání a distribuce prostoru mezi položkami uvnitř kontejneru, zejména ve směrech, kde to tradiční blokové nebo inline modely nedokázaly uspokojivě řešit.
Základní pojmy
Při práci s flexboxem je důležité pochopit dva základní pojmy: flex kontejner (flex container) a flex položky (flex items). Flex kontejner je rodičovský prvek, do kterého umisťujeme flex položky. Tento kontejner definujeme nastavením vlastnosti display na hodnotu flex nebo inline-flex.
Vytvoření flex kontejneru
.container {
display: flex;
}
Tento kód přemění element s třídou .container na flex kontejner, čímž umožní flexibilní manipulaci s jeho potomky (flex položkami).
Práce s flex položkami
Po definování flex kontejneru lze manipulovat s jeho flex položkami pomocí různých vlastností. Tyto vlastnosti zahrnují flex-direction, justify-content, align-items, flex-grow, flex-shrink a flex-basis.
Zarovnání a uspořádání položek
-
flex-direction: Určuje hlavní osu flex kontejneru. Hodnoty mohou být row (výchozí), row-reverse, column nebo column-reverse.
-
justify-content: Zarovnává flex položky podle hlavní osy. Hodnoty mohou být flex-start (výchozí), flex-end, center, space-between, space-around nebo space-evenly.
-
align-items: Zarovnává flex položky podle vedlejší osy. Hodnoty mohou být flex-start, flex-end, center, baseline nebo stretch (výchozí).
Úprava velikosti flex položek
-
flex-grow: Určuje, jak má být prostor rozdělen mezi flex položky v případě, že je více prostoru, než vyžadují. Výchozí hodnota je 0.
-
flex-shrink: Určuje, jak mají být položky zmenšeny, pokud není dostatek prostoru. Výchozí hodnota je 1.
-
flex-basis: Určuje výchozí velikost položky před distribucí zbývajícího prostoru. Výchozí hodnota je auto.
Praktický příklad
.container {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
}
.item {
flex-grow: 1;
}
Tento kód nastaví flex kontejner tak, aby jeho položky byly rozloženy rovnoměrně podél hlavní osy, byly zarovnány na střed podle vedlejší osy a každá položka měla stejnou schopnost rozšířit se a využít dostupný prostor.
Flexbox je nesmírně užitečný pro vytváření responsivních layoutů, protože umožňuje položkám flexibilně reagovat na změny velikosti viewportu bez potřeby složitých výpočtů nebo pevných definic. Díky své flexibilitě a jednoduchosti použití se stal nezbytným nástrojem pro moderní webdesign.