Košík je prázdný

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.