Junior
Co je Flexbox?
sobes.tech AI
Odpověď od AI
Flexbox (Flexibilní rozložení boxů) je jednorozměrový model rozvržení v CSS, který je určen pro rozdělení místa mezi prvky v kontejneru a nabízí silné možnosti zarovnání. Umožňuje snadno řídit velikosti, pořadí a zarovnání dceřiných prvků (flex-prvků) uvnitř rodičovského kontejneru (flex-kontejner), bez ohledu na jejich původní pořadí nebo velikosti.
Hlavní koncepty Flexboxu:
- Flex-kontejner: Prvek s
display: flexnebodisplay: inline-flex. V něm jsou stanoveny pravidla rozvržení pro jeho přímé děti. - Flex-prvky: Přímé děti flex-kontejneru. Na ty se vztahují vlastnosti Flexboxu, které určují jejich chování uvnitř kontejneru.
- Hlavní osa (main axis): Osa, podél které jsou rozmístěny flex-prvky. Výchozí je horizontální (zleva doprava), ale může být změněna vlastností
flex-direction. - Křížová osa (cross axis): Osa kolmá na hlavní osu.
- Hlavní začátek (main start) / Hlavní konec (main end): Začátek a konec podél hlavní osy.
- Křížový začátek (cross start) / Křížový konec (cross end): Začátek a konec podél křížové osy.
Hlavní vlastnosti Flexboxu pro flex-kontejner:
display: Určuje, že prvek je flex-kontejner (flexneboinline-flex).flex-direction: Určuje směr hlavní osy (row,row-reverse,column,column-reverse).flex-wrap: Určuje, zda se flex-prvky budou přenášet na nový řádek/sloupec, pokud není místo (nowrap,wrap,wrap-reverse).justify-content: Zarovnává flex-prvky podél hlavní osy (flex-start,flex-end,center,space-between,space-around,space-evenly).align-items: Zarovnává flex-prvky podél křížové osy (flex-start,flex-end,center,baseline,stretch).align-content: Zarovnává řádky flex-prvků (pokud jich je více kvůliflex-wrap) podél křížové osy.
Hlavní vlastnosti flex-prvků:
order: Určuje pořadí zobrazení flex-prvku (výchozí 0).flex-grow: Koeficient růstu flex-prvku, který určuje, jak moc se může zvětšit, aby vyplnil dostupný prostor.flex-shrink: Koeficient zmenšení flex-prvku, který určuje, jak moc se může zmenšit, aby se zabránilo přetečení.flex-basis: Počáteční velikost flex-prvku před rozdělením volného prostoru.flex: Zkrácená forma proflex-grow,flex-shrinkaflex-basis.align-self: Přepisujealign-itemspro konkrétní flex-prvek.
Příklad použití:
HTML:
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
CSS:
.flex-container {
display: flex; /* Dělá z kontejneru flex-kontejner */
justify-content: center; /* Zarovnává prvky na střed hlavní osy */
align-items: center; /* Zarovnává prvky na střed křížové osy */
height: 200px; /* Pro demonstrační účely */
border: 1px solid black;
}
.flex-item {
width: 50px;
height: 50px;
background-color: lightblue;
margin: 10px;
}
Hlavní výhody Flexboxu:
- Snadné zarovnání prvků horizontálně i vertikálně.
- Flexibilní rozdělení prostoru mezi prvky.
- Snadná změna pořadí prvků.
- Responzivní design bez použití float a pozice.
- Dobrá podpora v moderních prohlížečích.