Komplexní rozvržení pomocí příkladů flex css. Flexbox několik užitečných příkladů pro práci

V tomto článku se podíváme na 5 technik, které řeší hlavní problémy s rozložením CSS. Zahrnuli jsme také několik praktických příkladů ze skutečných projektů, které názorně ukazují, jak lze tyto techniky použít.

Vytváření sloupů se stejnou výškou

Na první pohled to může vypadat docela jednoduše, ale tento úkol může být občas otravný. Použití min-height nebude fungovat, protože jakmile se objeví nějaký obsah, velikost sloupců se okamžitě začne měnit.

Oprava tohoto problému pomocí flexboxu také není řešením, protože sloupce vytvořené pomocí flexbox CSS budou mít zpočátku stejnou délku. Potřebujeme pouze zavést „flexibilní“ model a poté se ujistit, že vlastnosti flex-direction a align-items jsou nastaveny správně.

...
...
...
.container ( display: flex; /* Inicializace modelu flex */ /* Toto jsou výchozí hodnoty, ale stále je můžete změnit */ flex-direction: row; /* Položky uvnitř kontejneru budou umístěny vodorovně */ zarovnat -items : stretch; /* Prvky uvnitř kontejneru budou roztaženy po celé své výšce */ )

Přeskupení prvků

Kdysi v minulosti byla dynamická změna pořadí určitých prvků úkolem, který uměl pouze JavaScript. S příchodem flexboxu však tento problém již nevzniká, protože řešení spočívá pouze v jedné vlastnosti CSS.

Vlastnost objednávky, která umožňuje použití rozložení flexboxu, mluví sama za sebe. Umožňuje nám měnit libovolný počet „flexibilních“ prvků a jejich pořadí. Jediným parametrem této vlastnosti je celé číslo, které určuje pozici tohoto prvku, čím větší číslo, tím vyšší priorita tohoto prvku.

...
...
...
.container( display: flex; ) /* Priorita sestupného čísla */ .blue( order: 3; ) .red( order: 2; ) .green( order: 1; )

Vlastnost objednávky má mnoho využití. Pokud chcete některé z nich vidět, můžete se podívat na tento, kde pomocí této techniky vytváříme responzivní sekci komentářů.


Horizontální a vertikální centrování

Zarovnání v CSS je stále dost velký problém. I když se obrátíte na vyhledávač, vrátí hromadu řešení, z nichž většina navrhne použití tabulek a transformací, což není úplně vhodné, pokud mluvíme o adaptivním rozložení.

Jednoduchým řešením by bylo rozvržení flexboxu, pomocí kterého lze prvky jednoduše posouvat podél souřadnicové roviny a zarovnávat je podle libosti.

...
.container( display: flex; /* Na střed kolem hlavní osy */ justify-content: center; /* na střed kolem vedlejší osy */ align-items: center; )

Chcete-li vidět toto řešení v akci a dozvědět se o něm více, můžete přejít na stránku , která je ve stejném tématu.


Vytváření plně responzivních mřížek

Mnoho webmasterů se při vytváření responzivních mřížek spoléhá na různé CSS knihovny a frameworky. Nejběžnějším nástrojem v této oblasti je Bootstrap. Není však jediný svého druhu. Podobných pomocníků už byly vyvinuty stovky. Všechny fungují relativně dobře a mohou se pochlubit působivou nabídkou možností, ale nikdy se nezbaví jednoho problému - těžkopádnosti. Pokud jste tedy člověk, který rád dělá všechno sám, nebo prostě nechcete instalovat celý framework kvůli mřížce, pak vám rozložení flexboxu pomůže!

Řada v mřížce flexboxu je pouze kontejner. Vodorovných sloupců uvnitř může být libovolný počet prvků, jejichž velikost se nastavuje pomocí flex . Tento model se přizpůsobí jakékoli velikosti obrazovky, takže konečný výsledek by měl vypadat dobře na většině zařízení. Pokud se však rozhodneme, že na obrazovce není dostatek horizontálního prostoru, lze rozložení jednoduše převést na vertikální pomocí mediálního dotazu.

...
...
...
.container( display: flex; ) /* Třídy pro každý sloupec s velikostí. */ .col-1( flex: 1; ) .col-2( flex: 2; ) @media (max-width: 800px)( .container( /* Změní vodorovný objekt na svislý. */ flex- směr: sloupec ;)

O variabilitě této techniky se můžete přesvědčit v návodu: Nejjednodušší způsob tvoření.


Vytvoření pevného zápatí

Flexbox CSS má i na tento problém jednoduché řešení. Vytvořením stránky, která obsahuje nalepovací zápatí, napsané pomocí prvků flex, již nebude třeba přemýšlet o tom, že by se mohla posunout.

Použití display: flex na značku body nám umožní používat "flex mode" v celém rozvržení. Když je vše připraveno, hlavní částí stránky bude jeden „flexibilní“ prvek a zápatí druhým, což zjednoduší manipulaci s jejich pozicemi.

...
...


html( výška: 100%; ) body( display: flex; flex-direction: column; height: 100%; ) .main( /* Hlavní sekce vyplní vše, co je k dispozici volné místo na stránce, která není obsazena zápatím */ flex: 1 0 auto; ) zápatí( /* Zápatí přidělí přesně tolik místa, kolik potřebuje, a ani o pixel více */ flex: 0 0 auto; )

Více informací o této technice najdete v článku "".


Závěr

Většina prohlížečů dnes podporuje flexibilní režim rozvržení, což znamená, že lze s jistotou říci, že flexbox je připraven pomoci mnoha vývojářům.

Doufám, že vám tento článek pomohl a zlepšil jste své znalosti CSS. Hodně štěstí!

CSS flexbox (Flexibilní modul rozvržení krabic)- modul flexibilního uspořádání kontejneru - je způsob uspořádání prvků, založený na myšlence osy.

Flexbox se skládá z flexibilní nádoba A flexibilní položky. Flexibilní prvky mohou být uspořádány do řady nebo sloupců a zbývající volný prostor je mezi nimi rozdělen různými způsoby.

Modul flexbox umožňuje řešit následující úlohy:

  • Uspořádejte prvky v jednom ze čtyř směrů: zleva doprava, zprava doleva, shora dolů nebo zdola nahoru.
  • Přepsat pořadí zobrazení prvků.
  • Automaticky upravte velikost prvků tak, aby se vešly do dostupného prostoru.
  • Vyřešte problém s horizontálním a vertikálním centrováním.
  • Přesuňte položky do kontejneru, aniž byste jej přeplnili.
  • Vytvořte sloupce stejné výšky.
  • Vytvořit stisknuté ve spodní části stránky.

Flexbox řeší specifické problémy – vytváření jednorozměrných rozvržení, například navigační lišty, protože prvky Flex lze umístit pouze podél jedné z os.

Seznam aktuálních problémů s moduly a jejich řešení napříč prohlížeči si můžete přečíst v článku Philipa Waltona.

Co je flexbox

Podpora prohlížeče

TJ: 11,0, 10,0 -ms-
Firefox: 28,0, 18,0 -moz-
Chrome: 29,0, 21,0 -webkit-
Safari: 6.1 -webkit-
Opera: 12.1 -webkit-
iOS Safari: 7.0 -webkit-
Opera Mini: 8
Prohlížeč Android: 4.4, 4.1 -webkit-
Chrome pro Android: 44

1. Základní pojmy

Rýže. 1. Model Flexbox

Pro popis modulu Flexbox se používá specifická sada termínů. Hodnota flex-flow a režim záznamu určují shodu těchto termínů s fyzickými směry: nahoře / vpravo / dole / vlevo, osy: vertikální / horizontální a rozměry: šířka / výška.

Hlavní osa— osa, podél které jsou rozmístěny ohebné prvky. Zasahuje do hlavní dimenze.

Hlavní začátek a hlavní konec— čáry, které definují počáteční a koncovou stranu ohebného kontejneru, vzhledem k nimž jsou rozmístěny ohebné prvky (začínající od hlavního začátku směrem k hlavnímu konci).

Hlavní velikost) - šířka nebo výška flex kontejneru nebo flex položek, v závislosti na tom, který z nich je v hlavním rozměru, určuje hlavní velikost flex kontejneru nebo flex položky.

Křížová osa- osa kolmá k hlavní ose. Rozkládá se v příčném rozměru.

Křížový začátek a konec— čáry, které definují počáteční a koncovou stranu příčné osy, vzhledem k níž jsou rozmístěny ohebné prvky.

Velikost kříže— šířka nebo výška ohebného kontejneru nebo ohebných předmětů, podle toho, co je v příčném rozměru, je jejich příčný rozměr.


Rýže. 2. Režim řádků a sloupců

2. Flex nádoba

Kontejner Flex nastavuje pro svůj obsah nový flexibilní kontext formátování. Flex kontejner není blokový kontejner, takže vlastnosti CSS jako float , clear , vertical-align u podřízených prvků nefungují. Flex kontejner také není ovlivněn vlastnostmi column-*, které vytvářejí sloupce v textu, a pseudo-elementy::first-line a::first-letter .

Model rozvržení flexboxu je spojen s určitou hodnotu CSS zobrazují vlastnosti nadřazeného prvku HTML obsahujícího podřízené bloky. Chcete-li ovládat prvky pomocí tohoto modelu, musíte nastavit vlastnost zobrazení následovně:

Flex-container ( /*vygeneruje flexibilní kontejner na úrovni bloku*/ display: -webkit-flex; display: flex; ) .flex-container ( /*vygeneruje flexibilní kontejner na úrovni řádku*/ display: -webkit-inline- flex; displej: inline-flex; )

Po nastavení těchto hodnot vlastností se každý podřízený prvek automaticky stane ohebným prvkem seřazeným v jedné řadě (podél hlavní osy). V tomto případě se blokové a vložené podřízené prvky chovají stejně, tzn. Šířka bloků se rovná šířce jejich obsahu, přičemž se berou v úvahu vnitřní okraje a okraje prvku.


Rýže. 3. Zarovnání prvků v modelu flexboxu

Pokud nadřazený blok obsahuje text nebo obrázky bez obalů, stanou se anonymními flexibilními položkami. Text je zarovnán k hornímu okraji bloku kontejneru a výška obrázku se rovná výšce bloku, tzn. je deformovaná.

3. Flex prvky

Položky Flex jsou bloky, které představují obsah kontejneru Flex v toku. Kontejner Flex vytváří nový kontext formátování pro svůj obsah, což způsobuje následující funkce:

  • U flexibilních položek je jejich hodnota vlastnosti zobrazení uzamčena. Zobrazená hodnota: inline-block; a zobrazení: tabulka-buňka; vyhodnoceno na displeji: blok; .
  • Bílé místo mezi položkami zmizí: nestane se vlastní flexibilní položkou, i když je mezipoložkový text zabalen do anonymní flexibilní položky. Obsah anonymní flexibilní položky nelze upravovat, ale zdědí styly (jako jsou možnosti písma) z kontejneru Flex.
  • Absolutně umístěný ohebný prvek se nepodílí na rozvržení ohebného rozvržení.
  • Okraje sousedních ohebných prvků se nezbortí.
  • Hodnoty procentuálního okraje a odsazení se počítají z vnitřní velikosti bloku, který je obsahuje.
  • okraj: auto; expandovat a absorbovat další prostor v odpovídající dimenzi. Lze je použít k vyrovnání nebo zatlačení sousedních ohebných předmětů.
  • Auto minimální velikost flex položky výchozí na minimální velikost jejich obsahu, tj. min-šířka: auto; . U rolovatelných kontejnerů je automatická minimální velikost obvykle nula.

4. Pořadí a orientace zobrazení položky Flex

Obsah ohebného kontejneru lze rozložit v libovolném směru a v libovolném pořadí (přeuspořádání ohebných předmětů v kontejneru ovlivní pouze vizuální vykreslení).

4.1. Směr hlavní osy: flex-direction

Vlastnost se vztahuje na flex kontejner. Řídí směr hlavní osy, podél které jsou položeny ohebné předměty, v souladu s současný režim evidence. Neděděno.

flex-direction
Hodnoty:
řádek Výchozí hodnota je zleva doprava (v rtl, zprava doleva). Flex prvky jsou uspořádány v řadě. Začátek (main-start) a konec (main-end) směru hlavní osy odpovídají začátku (inline-start) a konci (inline-end) osy čáry (inline-axis).
řádek-zpět Směr je zprava doleva (v rtl zleva doprava). Flex prvky jsou rozmístěny v linii vzhledem k pravému okraji kontejneru (v rtl - vlevo).
sloupec Směr shora dolů. Flex prvky jsou rozmístěny ve sloupci.
sloupec-reverzní Sloupec s prvky v opačném pořadí, zdola nahoru.
počáteční
zdědit

Rýže. 4. Vlastnost Flex-direction pro jazyky zleva doprava

Syntax

Flex-kontejner ( displej: -webkit-flex; -webkit-flex-direction: řádek-reverzní; displej: flex; flex-direction: řádek-reverzní; )

4.2. Správa víceřádkového flex kontejneru: flex-wrap

Vlastnost určuje, zda bude ohebný kontejner jednořádkový nebo víceřádkový, a také nastaví směr příčné osy, která určuje směr, ve kterém budou položeny nové řádky ohebného kontejneru.

Ve výchozím nastavení jsou flexibilní položky naskládány na jeden řádek podél hlavní osy. Pokud přetečou, budou přesahovat ohraničující rámeček ohebného kontejneru. Nemovitost se nedědí.


Rýže. 5. Víceřádkové ovládání pomocí vlastnosti flex-wrap pro LTR jazyky

Syntax

Flex-kontejner ( displej: -webkit-flex; -webkit-flex-wrap: wrap; display: flex; flex-wrap: wrap; )

4.3. Krátké shrnutí směru a víceřádků: flex-flow

Tato vlastnost vám umožňuje definovat směry hlavní a příčné osy a také možnost přesunout ohebné prvky v případě potřeby na několik čar. Toto je zkratka pro vlastnosti flex-direction a flex-wrap. Výchozí hodnota flex-flow: row nowrap; . nemovitost se nedědí.

Syntax

Flex-container ( displej: -webkit-flex; -webkit-flex-flow: řádkové balení; displej: flex; flex-flow: řádkové balení; )

4.4. Zobrazit pořadí flexibilních položek: objednávka

Tato vlastnost definuje pořadí, ve kterém jsou položky Flex zobrazeny a uspořádány v kontejneru Flex. Platí pro flex položky. Nemovitost se nedědí.

Zpočátku mají všechny položky flex pořadí: 0; . Když pro prvek zadáte hodnotu -1, přesune se na začátek časové osy a hodnota 1 se přesune na konec. Pokud má více položek flex stejnou hodnotu objednávky, budou vykresleny podle původní objednávky.

Syntax

Flex-container ( display: -webkit-flex; display: flex; ) .flex-item ( -webkit-order: 1; order: 1; )
Rýže. 6. Zobrazení pořadí flexibilních položek

5. Pružnost pružných prvků

Definujícím aspektem ohebného rozvržení je schopnost „ohýbat“ položky, měnit jejich šířku/výšku (v závislosti na velikosti na hlavní ose), aby se vyplnil dostupný prostor v hlavním rozměru. To se provádí pomocí vlastnosti flex. Ohebný kontejner rozděluje volný prostor mezi své děti (úměrně jejich poměru ohybu a růstu), aby naplnil kontejner, nebo je zmenšil (úměrně jejich poměru ohybu a smrštění), aby se zabránilo přetečení.

Pružný prvek bude zcela „neflexibilní“, pokud jeho hodnoty flex-grow a flex-shrink budou nulové, a v opačném případě „flexibilní“.

5.1. Nastavení flexibilních rozměrů s jednou vlastností: flex

Tato vlastnost je zkratkou pro vlastnosti flex-grow, flex-shrink a flex-base. Výchozí hodnota: flex: 0 1 auto; . Můžete zadat jednu nebo všechny tři hodnoty vlastností. Nemovitost se nedědí.

Syntax

Flex-container ( display: -webkit-flex; display: flex; ) .flex-item ( -webkit-flex: 3 1 100px; -ms-flex: 3 1 100px; flex: 3 1 100px; )

5.2. Růstový faktor: flex-grow

Tato vlastnost určuje rychlost růstu jednoho ohebného prvku vzhledem k ostatním ohebným prvkům v ohebném kontejneru při distribuci pozitivní volný prostor. Pokud je součet hodnot flex-grow flex položek v řadě menší než 1, zabírají méně než 100 % volného místa. Nemovitost se nedědí.


Rýže. 7. Správa prostoru navigační lišty pomocí Flex-Grow

Syntax

Flex-container ( display: -webkit-flex; display: flex; ) .flex-item ( -webkit-flex-grow: 3; flex-grow: 3; )

5.3. Kompresní poměr: flex-shrink

Tato vlastnost určuje kompresní poměr flexibilní položky vzhledem k ostatním flexibilním položkám při distribuci záporného volného prostoru. Vynásobeno velikostí základny flex. Záporný prostor je přidělen úměrně tomu, jak moc se může položka zmenšit, takže například malá ohebná položka se nezmenší na nulu, dokud nebude ohebná položka znatelně menší. větší velikost. Nemovitost se nedědí.


Rýže. 8. Zúžení flex položek v řadě

Syntax

Flex-container ( displej: -webkit-flex; display: flex; ) .flex-item ( -webkit-flex-shrink: 3; flex-shrink: 3; )

5.4. Základní velikost: flex-base

Vlastnost nastaví počáteční základní velikost flexibilní položky před přidělením volného místa podle faktorů pružnosti. Pro všechny hodnoty kromě auto a content je základní velikost ohybu definována stejně jako šířka v režimech horizontálního psaní. Procentuální hodnoty jsou definovány vzhledem k velikosti flex kontejneru, a pokud není specifikována žádná velikost, hodnotou použitou pro flex-base jsou rozměry jeho obsahu. Neděděno.

Syntax

Flex-container ( display: -webkit-flex; display: flex; ) .flex-item ( -webkit-flex-basis: 100px; flex-basis: 100px; )

6. Zarovnání

6.1. Zarovnání hlavní osy: justify-content

Tato vlastnost zarovná ohebné položky podél hlavní osy ohebného kontejneru a rozdělí volný prostor neobsazený ohebnými předměty. Když je položka převedena na flexibilní kontejner, flexibilní položky jsou standardně seskupeny (pokud nemají nastavené okraje). Mezery se přičítají po výpočtu hodnot marže a flex-grow. Pokud některé prvky mají nenulový flex-grow nebo okraj: auto; , vlastnost nebude mít žádný vliv. Nemovitost se nedědí.

Hodnoty:
flex-start Výchozí hodnota. Flex prvky jsou rozmístěny ve směru začínajícím od startovní čáry ohebného kontejneru.
ohebný konec Flex položky jsou rozloženy ve směru od koncové linie flexibilní nádoby.
centrum Flex položky jsou zarovnány do středu flexibilní nádoby.
prostor-mezi Flex prvky jsou rozmístěny rovnoměrně podél linie. První ohebná položka se umístí do jedné roviny s okrajem počáteční čáry, poslední ohebná položka se umístí do jedné roviny s okrajem koncové čáry a zbývající ohebné položky na čáře jsou rozmístěny tak, aby vzdálenost mezi libovolnými dvěma sousedními položkami byla stejný. Pokud je zbývající volné místo záporné nebo je na řádku pouze jedna flexibilní položka, je tato hodnota totožná s parametrem flexibilního startu.
prostor kolem Ohebné položky na lince jsou rozmístěny tak, že vzdálenost mezi jakýmikoli dvěma sousedními ohebnými položkami je stejná a vzdálenost mezi prvními/posledními ohebnými položkami a okraji ohebného kontejneru je polovina vzdálenosti mezi ohebnými položkami.
počáteční Nastaví hodnotu vlastnosti na výchozí hodnotu.
zdědit Zdědí hodnotu vlastnosti z nadřazeného prvku.

Rýže. 9. Zarovnání prvků a rozdělení volného prostoru pomocí vlastnosti justify-content

Syntax

Flex-container ( display: -webkit-flex; -webkit-justify-content: flex-start; display: flex; justify-content: flex-start; )

6.2. Zarovnání napříč osami: zarovnat položky a zarovnat-sebe

Flex položky lze zarovnat podél příčné osy aktuální řady flexibilní nádoby. align-items nastaví zarovnání pro všechny položky flex kontejneru, včetně anonymních flex položek. align-self umožňuje přepsat toto zarovnání pro jednotlivé flexibilní položky. Pokud je některý z příčných okrajů ohybového prvku nastaven na auto , zarovnání samo nemá žádný účinek.

6.2.1. Zarovnat položky

Tato vlastnost zarovná ohebné prvky, včetně anonymních ohebných prvků, podél příčné osy. Neděděno.

Hodnoty:
flex-start
ohebný konec
centrum
základní linie Základní linie všech ohebných položek zapojených do zarovnání jsou stejné.
protáhnout se
počáteční Nastaví hodnotu vlastnosti na výchozí hodnotu.
zdědit Zdědí hodnotu vlastnosti z nadřazeného prvku.
Rýže. 10. Vertikální vyrovnání prvků v kontejneru

Syntax

Flex-container ( display: -webkit-flex; -webkit-align-items: flex-start; display: flex; align-items: flex-start; )

6.2.2. Zarovnat se

Tato vlastnost je zodpovědná za zarovnání jednoho ohebného prvku na výšku ohebného kontejneru. Přepíše zarovnání zadané pomocí align-items . Neděděno.

Hodnoty:
auto Výchozí hodnota. Prvek flex používá zarovnání zadané ve vlastnosti align-items kontejneru flex.
flex-start Horní hrana ohebného prvku je umístěna vedle ohybové čáry (nebo ve vzdálenosti, s ohledem na specifikované okraje a okraje prvku) procházející začátkem příčné osy.
ohebný konec Spodní hrana ohebného prvku je umístěna vedle ohybové čáry (nebo ve vzdálenosti s ohledem na specifikované okraje a okraje prvku) procházející koncem příčné osy.
centrum Okraj ohebného prvku je vystředěn podél příčné osy v rámci ohybové linie.
základní linie Ohebný prvek je zarovnán k základní čáře.
protáhnout se Pokud je křížová velikost položky flex automatická a žádná z hodnot křížového okraje není automatická, položka se roztáhne. Výchozí hodnota.
počáteční Nastaví hodnotu vlastnosti na výchozí hodnotu.
zdědit Zdědí hodnotu vlastnosti z nadřazeného prvku.

Rýže. 11. Zarovnání jednotlivých flex položek

Syntax

Flex-container ( display: -webkit-flex; display: flex; ) .flex-item ( -webkit-align-self: center; align-self: center; )

6.3. Zarovnání čar flexibilního kontejneru: align-content

Tato vlastnost zarovná řádky ve flexibilním kontejneru, když je na příčné ose místo navíc, podobně jako zarovnání jednotlivých položek na hlavní ose pomocí vlastnosti justify-content. Tato vlastnost nemá vliv na jednořádkový flexibilní kontejner. Neděděno.

Hodnoty:
flex-start Řady jsou naskládány směrem k začátku flex kontejneru. Okraj první linie je umístěn blízko okraje flex nádoby, každá následující linie je umístěna blízko předchozí linie.
ohebný konec Řady jsou stohovány směrem ke konci flexibilního kontejneru. Okraj posledního řádku je umístěn blízko okraje flex kontejneru, každý předchozí řádek je umístěn poblíž dalšího řádku.
centrum Řady jsou stohovány směrem ke středu flex kontejneru. Řady jsou blízko u sebe a jsou zarovnány ke středu ohebného kontejneru se stejnou vzdáleností mezi počátečním okrajem obsahu ohebného kontejneru a první řadou a mezi koncovým okrajem obsahu ohebného kontejneru a poslední řadou.
prostor-mezi Řady jsou rovnoměrně rozmístěny v flex kontejneru. Pokud je zbývající volné místo záporné nebo je v kontejneru flex pouze jedna čára flex, je tato hodnota totožná s hodnotou flex-start . V opačném případě je okraj prvního řádku umístěn blízko k počátečnímu okraji obsahu flexibilního kontejneru a okraj posledního řádku je umístěn blízko ke koncovému okraji obsahu flexibilního kontejneru. Zbývající čáry jsou rozmístěny tak, že vzdálenost mezi libovolnými dvěma sousedními čarami je stejná.
prostor kolem Čáry jsou rovnoměrně rozmístěny ve flex kontejneru s polovičním prostorem na obou koncích. Pokud je zbývající volné místo záporné, je tato hodnota shodná s hodnotou uprostřed. Jinak jsou čáry rozmístěny tak, že vzdálenost mezi libovolnými dvěma sousedními čarami je stejná a vzdálenost mezi prvními/posledními čarami a okraji obsahu ohebného kontejneru je poloviční než vzdálenost mezi čarami.
protáhnout se Výchozí hodnota. Řady pružných předmětů se rovnoměrně natahují, aby zaplnily veškerý dostupný prostor. Pokud je zbývající volné místo záporné, je tato hodnota totožná s flex-start . V opačném případě bude volný prostor rozdělen rovnoměrně mezi všechny řádky, čímž se zvětší jejich boční velikost.
počáteční Nastaví hodnotu vlastnosti na výchozí hodnotu.
zdědit Zdědí hodnotu vlastnosti z nadřazeného prvku.
Rýže. 12. Víceřádkové vyrovnání flex prvků

Syntax

Flex-container ( display: -webkit-flex; -webkit-flex-flow: row wrap; -webkit-align-content: flex-end; display: flex; flex-flow: row wrap; align-content: flex-end ; výška: 100px; )

Flexboxy jsou ideální pro vytváření běžně používaných rozvržení webových stránek, jako je třísloupcové rozvržení tzv. „Svatý grál“, kde všechny sloupce musí mít plnou výšku bez ohledu na jejich obsah. Zároveň v zdrojový kód hlavní obsah je před navigací a na samotné stránce je hlavní obsah po navigaci.

Takhle.

Příklad

Čepice
Článek
Suterén


Před Flexboxem bylo tohoto rozložení docela obtížné dosáhnout bez použití některých hacků. Vývojáři často museli dělat věci, jako je přidat další označení, použít záporné okraje a další triky, aby zajistili, že vše bude správně zarovnáno bez ohledu na množství obsahu nebo velikost obrazovky. Jak ale ukazuje výše uvedený příklad, na Flexboxu je vše mnohem jednodušší.

Zde je shrnutí kódu. V tomto příkladu uděláme z prvku #main flexibilní kontejner a záhlaví a zápatí ponecháme jako prvky bloku. Jinými slovy, pouze střední část se stane flexboxem. Zde je úryvek, který z něj dělá flexibilní kontejner.

#hlavní ( displej: flex; min-výška: calc(100vh - 40vh); )

Stačí použít display: flex k vytvoření flex nádoby. Všimněte si, že jsme také nastavili minimální výšku pomocí funkce calc() a nastavili #main na 100 % výšky výřezu mínus výška hlavičky a základny (každý 20vh). Tím je zajištěno, že rozložení vyplní celou výšku obrazovky, i když je obsahu málo. Díky tomu se zápatí nikdy nezvedne a nezůstane pod ním prázdné místo, pokud obsah zabere méně než výšku obrazovky.

Výpočet minimální výšky byl poměrně jednoduchý, vzhledem k tomu, že jsme na všechny prvky aplikovali velikost boxu: border-box. Pokud bychom to neudělali, museli bychom k součtu přidat hodnotu výplně, kterou bychom odečetli.

Po instalaci flex kontejneru se zabýváme flex prvky.

#hlavní > článek ( flex: 1; ) #main > nav, #main > aside ( flex: 0 0 20vw; background: beige; ) #main > nav ( order: -1; )

Flex vlastnost je zkratka pro vlastnosti flex-grow, flex-shrink a flex-base. V prvním případě jsme napsali pouze jednu hodnotu, takže flex nastavuje vlastnost flex-grow. Ve druhém případě jsme zapsali všechny tři hodnoty pro