Rozloženie pomocou CSS Flexbox. Flexbox niekoľko užitočných príkladov pre prácu Komplexné rozloženia pomocou príkladov flex css

  • 29.06.2020

Na príklade formulára zo skutočného testovacieho zadania vám ukážem, ako sa sádzať BEM použitím flexbox... Pýtate sa: „Prečo je potrebné sádzať BEM + Flexbox? "Táto požiadavka pochádza od zamestnávateľa. Citát z TK:" Skúste sadzbu bez rámcov (najlepšie na flexbox) je jednoduchý a priamočiary: vyhnite sa objemným konštrukciám a zbytočnému kódu, použite metodiku BEM."

Fragment rozloženia sekcie s formulárom

Moje pravidlá rozloženia

  1. Rozdeľte rozloženie na logické časti
  2. Začnite každú sekciu štítkom oddiele
  3. Samostatné oddiely a CSS riadený oddelene, prázdny riadok
  4. Ku každej značke priraďte triedu
  5. Názov triedy pre blok alebo prvok odpovedá na otázku - Čo je to?
  6. Názov modifikátora odpovedá na otázku - Ktoré?

HTML značky

Najprv urobím označenie, vnorím bloky a pomenujem triedy. V nižšie uvedenom kóde máme dve vložené značky - h2 a vstup... Vložené značky sú bolesťou hlavy a príčinou stresu pre začínajúcich dizajnérov rozloženia. prečo? Správajú sa veľmi zle - snažia sa obsadiť celú dostupnú šírku, neumožňujú nastaviť farbu pozadia a veľkosti celého bloku.



osobné informácie











Čo potom robí zlý návrhár rozloženia? Zabalí vložené prvky do blokových značiek div a nastaví všetky potrebné vlastnosti tagu wrapper. Podradené prvky dedia tieto vlastnosti. Oplatí sa postaviť záhradu z extra kódu? Čo urobí kompetentný dizajnér dispozičného riešenia? Prepíše vložený prvok tak, aby bol blokom alebo vloženým blokom, in CSS pravidlá.

Displej: blok; // pre vstupnú značku
displej: inline-block; // pre značku h2

Logika vnorenia a názvy blokov

Vidíme sekciu s osobnými informáciami, takže triedu sekcie voláme - Info... Oddiel pozostáva z troch detí:

Ikona // názov triedy info__icon
názov // info__title
formulár // info__form

Spodný riadok je v názvoch tried BEM, spočíva v spolupatričnosti dieťaťa k rodičovi. Nie je možné pomenovať prvok ikonu... Toto nie je len nejaká ikona, ale ikona zo sekcie Info.

Dcéra a rodič sa spojili do jedného

Blokovať info__form, mame specialny - je vnoreny v sekcii Info, ale zároveň obsahuje polia formulára. Názov tohto javu je viacúrovňové hniezdenie. Blok s formulárom má iba funkciu zalamovania vstupov, aby ste mohli jednoducho nastaviť externú výplň. Malé vstupy sa totiž správajú ako deti (kto sú), vôbec neposlúchajú. Okrem toho je druhý vstup kratší ako všetky ostatné a líši sa iba šírkou.

Nastavili sme jednu triedu pre všetky vstupy s rovnakými vlastnosťami, okrem šírky - info__vstup... Pre bežné vstupy pridajte modifikátor info__input_long a krátkym modifikátorom vstupu info__input_short... Dovoľte mi pripomenúť, že modifikátor by BEM, by mal odpovedať na otázku - Ktoré?









CSS pravidlá pre modifikátory

.info__input_long (
šírka: 520px;
}

Info__input_short (
šírka: 320px;
}

CSS kód

V Html markup vytvára hrubú štruktúru webu, v CSS, už umiestňujeme prvky podľa rozloženia. Dnes sa nebudeme zaoberať vzhľadom, ale zameriame sa na umiestnenie prvkov. V našej sekcii sa nachádzajú dva flex kontajnery. Musím povedať, že použitie ohybov pri usporiadaní všetkých prvkov jeden po druhom v rade je veľmi pochybné. Jedinou získanou výhodou je majetok ospravedlniť-obsah stredové zarovnanie flexibilných predmetov. Na svoju obranu môžem povedať, že myšlienka s flexami je nezmyselná len v kontexte tejto časti. Skutočné rozloženie má zvyčajne väčšiu rozmanitosť.

Info (
displej: flex;
justify-content: center;
align-items: center;
smer ohybu: stĺpec;
margin-top: 77px;
výška: 100 %;
}

Info__form (
displej: flex;
justify-content: center;
smer ohybu: stĺpec;
výška: 100 %;
margin-top: 50px;

Flexbox možno právom nazvať úspešným pokusom o vyriešenie veľkého množstva problémov pri budovaní layoutov v css. Ale predtým, než prejdeme k jeho popisu, poďme zistiť, čo je zlé na metódach rozloženia, ktoré teraz používame?

Každý sadzač pozná niekoľko spôsobov, ako niečo zvisle zarovnať, alebo vytvoriť 3-stĺpcové rozloženie s gumeným stredovým stĺpcom. Ale priznajme si, že všetky tieto metódy sú dosť zvláštne, podobné hacku, nie sú vhodné vo všetkých prípadoch, sú ťažko pochopiteľné a nefungujú, ak nie sú splnené určité magické podmienky, ktoré sa historicky vyvinuli.

Stalo sa to preto, že html a css sa vyvinuli evolučne. Webové stránky zo začiatku vyzerali ako jednovláknové textové dokumenty, o niečo neskôr bola stránka rozdelená na bloky tabuľkami, potom prišlo do módy sádzať floaty a po oficiálnej smrti ie6 pribudli aj inline-blokové triky. Výsledkom je, že sme zdedili výbušnú zmes všetkých týchto techník, ktoré sa používajú na zostavenie rozložení pre 99,9 % všetkých existujúcich webových stránok.

Viacriadkové usporiadanie boxov v rámci flex kontajnera.

ohybný obal

Všetky príklady, ktoré sme uviedli vyššie, boli zostavené s ohľadom na jednoriadkové (jednostĺpcové) usporiadanie blokov. Je potrebné povedať, že štandardne flexibilný kontajner vždy usporiada bloky v sebe do jedného riadku. Špecifikácia však podporuje aj viacriadkový režim. Vlastnosť flex-wrap CSS je zodpovedná za viacriadok vo vnútri flex kontajnera.

Dostupné hodnoty ohybný obal:

  • nowrap (predvolené): bloky sú usporiadané v jednom riadku zľava doprava (v rtl sprava doľava)
  • zábal: bloky sú usporiadané v niekoľkých horizontálnych radoch (ak sa nezmestia do jedného radu). Idú za sebou zľava doprava (v rtl sprava doľava)
  • wrap-reverse: rovnaký ako obal, ale bloky sú v opačnom poradí.

flex-flow - Pohodlná skratka pre flex-direction + flex-wrap

Flex-flow v skutočnosti poskytuje schopnosť opísať smer hlavnej osi a viacčiaru priečnej osi v jednej vlastnosti. Štandardne flex-flow: row nowrap.

flexibilný prietok:<‘flex-direction’> || <‘flex-wrap’>

CSS

/ * t.j. ... * / .my-flex-block (flex-direction: column; flex-wrap: wrap;) / * toto je to isté ako ... * / .my-flex-block (flex-flow: column wrap ;)

zarovnať-obsah

K dispozícii je tiež vlastnosť align-content, ktorá určuje, ako sú výsledné rady boxov vertikálne zarovnané a ako rozdeľujú celý priestor flexibilného kontajnera.

Dôležité: align-content funguje len vo viacriadkovom režime (t. j. v prípade flex-wrap: wrap; alebo flex-wrap: wrap-reverse;)

Dostupné hodnoty zarovnať-obsah:

  • flex-start: rady škatúľ sú pritlačené k začiatku flex kontajnera.
  • flex-end: rady škatúľ sú pritlačené ku koncu flex kontajnera
  • stred: rady škatúľ sú v strede flex kontajnera
  • medzera medzi: prvý rad škatúľ je na začiatku flex kontajnera, posledný rad škatúľ je na konci, všetky ostatné rady sú rovnomerne rozmiestnené v zostávajúcom priestore.
  • priestor okolo: Rad škatúľ sú rovnomerne rozmiestnené od začiatku po koniec flexibilného kontajnera, čím sa všetok voľný priestor rozdeľuje rovnomerne.
  • natiahnuť (predvolené): Riadky blokov sú natiahnuté, aby vyplnili dostupný priestor.

Vlastnosti flex-wrap a align-content CSS by sa mali aplikovať priamo na flex kontajner, nie na jeho potomkov.

Ukážka viacriadkových vlastností vo flexe

Pravidlá CSS pre deti flex kontajnerov (flex boxy)

flex-base - veľkosť základne jedného flex boxu

Nastaví počiatočnú veľkosť hlavnej osi pre flex box predtým, ako sa naň použijú konverzie založené na iných faktoroch flex. Možno zadať v ľubovoľnej jednotke dĺžky (px, em,%, ...) alebo automaticky (predvolené). Ak je nastavený ako automatický - za základ sa berú rozmery bloku (šírka, výška), ktoré môžu závisieť od veľkosti obsahu, ak nie sú výslovne uvedené.

flex-grow - chamtivosť jedného flex bloku

V prípade potreby určuje, o koľko môže byť jeden flex box väčší ako súrodenecké položky. flex-grow nadobúda hodnotu bez jednotiek (predvolená hodnota 0)

Príklad 1:

  • Ak majú všetky flex boxy vo vnútri flex kontajnera flex-grow: 1, budú mať rovnakú veľkosť
  • Ak má jeden z nich flex-grow: 2, potom bude 2-krát väčší ako všetky ostatné.

Príklad 2:

  • Ak majú všetky flex boxy vo vnútri flex kontajnera flex-grow: 3, budú mať rovnakú veľkosť
  • Ak má jeden z nich flex-grow: 12, potom bude 4-krát väčší ako všetky ostatné.

To znamená, že absolútna hodnota flex-grow neurčuje presnú šírku. Definuje, aké je chamtivé s ostatnými flexboxmi rovnakej úrovne.

flex-shrink - faktor "stlačiteľnosti" jedného flex-bloku

Určuje, o koľko sa flex box zmrští v porovnaní so susednými prvkami vo vnútri flex kontajnera, ak nie je dostatok voľného miesta. Predvolená hodnota je 1.

flex - skratka pre vlastnosti flex-grow, flex-shrink a flex-basis

flex: žiadny | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ]

CSS

/ * t.j. ... * / .my-flex-block (flex-grow: 12; flex-shrink: 3; flex base: 30em;) / * toto je to isté ako ... * / .my-flex-block ( flex : 12 3 30 em ;)

Demo pre flex-grow, flex-shrink a flex-base

align-self - zarovnanie jedného flex boxu pozdĺž priečnej osi.

Umožňuje prepísať vlastnosť flexibilného kontajnera align-items pre individuálny flexibilný blok.

Dostupné hodnoty pre align-self (rovnakých 5 možností ako pre align-items)

  • flex-start: flex box je pritlačený k začiatku priečnej osi
  • flex-end: flex box je pritlačený ku koncu priečnej osi
  • stred: flex boxy sú umiestnené v strede priečnej osi
  • základná línia: flex box je zarovnaný so základnou líniou
  • natiahnuť (predvolené): Flex box sa natiahne tak, aby vyplnil všetok dostupný priestor naprieč osami, pričom rešpektuje minimálnu šírku / maximálnu šírku, ak existuje.

objednávka – poradie, v ktorom je objednaný jeden flex box v rámci flex kontajnera.

Štandardne budú všetky bloky nasledovať za sebou v poradí uvedenom v html. Túto objednávku je však možné zmeniť pomocou vlastnosti objednávky. Zadáva sa ako celé číslo a predvolene je 0.

Hodnota objednávky nešpecifikuje absolútnu pozíciu prvku v sekvencii. Určuje váhu pozície položky.

Html

položka1
položka2
položka 3
položka 4
položka 5

V tomto prípade budú bloky nasledovať jeden po druhom pozdĺž hlavnej osi v nasledujúcom poradí: položka5, položka1, položka3, položka4, položka2

Demo pre zarovnanie a poriadok

okraj: auto vertikálne... Sny sa stanú skutočnosťou!

Flexbox môžete milovať už len pre to, že známe horizontálne zarovnanie cez okraj: auto tu funguje aj pre vertikálne!

My-flex-container (displej: flex; výška: 300px; / * Alebo čokoľvek * /). My-flex-block (šírka: 100px; / * Alebo čokoľvek * / výška: 100px; / * Alebo čokoľvek * / okraj: auto; / * Kúzlo! Blok je vycentrovaný vertikálne a horizontálne! * /)

Veci na zapamätanie

  1. Nemali by ste používať flexbox tam, kde to nie je potrebné.
  2. V mnohých prípadoch je stále užitočné, aby definovanie oblastí a zmena poradia obsahu závisela od štruktúry stránky. Premysli si to.
  3. Pochopte flexbox a poznajte základy. Vďaka tomu je oveľa jednoduchšie dosiahnuť očakávaný výsledok.
  4. Nezabudnite na marže. Zohľadňujú sa pri nastavovaní zarovnania osí. Je tiež dôležité pamätať na to, že okraje flexboxu sa „nezrútia“ ako pri normálnom toku.
  5. Hodnota float flex boxov je ignorovaná a irelevantná. To sa asi dá nejako využiť na ladnú degradáciu pri prechode na flexbox.
  6. flexbox sa veľmi dobre hodí na rozloženie webových komponentov a jednotlivých častí webových stránok, ale neosvedčil sa pri rozložení základných rozložení (umiestnenie článku, hlavičky, päty, navigačnej lišty a pod.). Toto je stále kontroverzný bod, ale tento článok celkom presvedčivo ukazuje nedostatky xanthir.com/blog/b4580

Konečne

Myslím si, že flexbox, samozrejme, nenahradí všetky ostatné metódy rozloženia, ale samozrejme, v blízkej budúcnosti si to pri riešení veľkého množstva úloh zaberie slušné miesto. A určite s ním teraz musíte skúsiť pracovať. Jeden z ďalších článkov bude venovaný konkrétnym príkladom práce s flex-layoutom. Prihláste sa na odber noviniek ;)

V tomto článku sa pozrieme na technológiu CSS Flexbox na vytváranie flexibilných rozložení webových stránok.

Účel CSS Flexbox

CSS Flexbox je pre vytváranie flexibilných rozložení... Pomocou tejto technológie môžete veľmi jednoducho a flexibilne usporiadať prvky v kontajneri, rozdeliť medzi ne dostupný priestor a zarovnať ich tak či onak, aj keď nemajú konkrétne rozmery.

CSS Flexbox uľahčuje vytváranie responzívnych návrhov než používanie Float a Positioning.

Flexbox je možné použiť na CSS rozloženie celej stránky, ako aj jej jednotlivých blokov.

Podpora prehliadača pre CSS Flexbox

CSS Flexbox podporujú všetky moderné prehliadače, ktoré sa v súčasnosti používajú (s predponami: IE10+, Edge12+, Firefox 2+, Chrome 4+, Safari 3.1+, Opera 12.1+, iOS Safari 3.2, Opera mini, Android 2.1+, Blackberry 7 +)...

Základy CSS Flexbox

Vytváranie rozloženia CSS pomocou Flexbox začína nastavením požadovaného prvku HTML na vlastnosť CSS display s hodnotou flex alebo flex-inline.

Potom sa táto položka stane flexibilným kontajnerom a tým všetkým okamžitý deti sú flexibilné predmety. Zároveň, keď hovoríme o flexboxe, máme na mysli iba prvok s displejom: flex alebo displej: flex-inline a všetky prvky priamo nachádza v ňom. V CSS Flexbox teda existujú iba dva typy položiek: flexibilný kontajner a flexibilný prvok.


Prefixed a max-width vlastnosti boli pridané do CSS na podporu rozloženia vo väčšine prehliadačov.

Trieda riadku sa používa na „premenu“ bloku na flex kontajner. Nastavenie šírky flexibilných položiek .col__article a .col__aside vo vnútri kontajnera flex sa vykonáva pomocou vlastnosti flex CSS.

Ako príklad si označme pätu pomocou flexboxu a vytvorte blok pozostávajúci z troch prvkov v prvku .col__article (minimálna šírka jedného prvku je 300px). Do päty umiestnite štyri bloky (minimálna šírka jedného bloku je 200px).


Chcel by som hovoriť o FlexBoxe. Modul rozloženia Flexbox (flexibilný box, v súčasnosti odporúčanie kandidáta W3C) má za cieľ ponúknuť efektívnejší spôsob rozloženia, zarovnania a distribúcie voľného priestoru medzi prvkami v kontajneri, aj keď ich veľkosť je neznáma a/alebo dynamická (preto slovo „ flexibilný").

Hlavnou myšlienkou flexibilného usporiadania je poskytnúť kontajneru možnosť zmeniť šírku / výšku (a poradie) svojich prvkov, aby lepšie vyplnili priestor (vo väčšine prípadov na podporu všetkých druhov displejov a veľkostí obrazoviek).Flexibilný kontajner naťahuje predmety, aby vyplnil voľný priestor, alebo zmršťuje predmety, aby sa nedostali za hranice.

Najdôležitejšie je, že rozloženie flexboxu je nezávislé od smeru, na rozdiel od bežných rozložení (rámčeky, ktoré idú vertikálne, a vložené prvky, ktoré idú horizontálne).Zatiaľ čo bežné rozloženie je skvelé pre webové stránky, chýba mu flexibilita na podporu veľkých alebo zložitých aplikácií (najmä pokiaľ ide o zmenu orientácie obrazovky, zmenu veľkosti, roztiahnutie, zmenšenie atď.).

Pretože flexbox je celý modul, nie len jedna vlastnosť, ale spája veľa vlastností.Niektoré z nich by sa mali vzťahovať na kontajner (rodičovský prvok, známy ako flexibilný kontajner), zatiaľ čo iné vlastnosti sa vzťahujú na podriadené alebo flexibilné položky.

Zatiaľ čo konvenčné usporiadanie je založené na smeroch toku blokových a inline prvkov, flexibilné usporiadanie je založené na "flexibilných smeroch toku".

Flexbox

V zásade budú prvky rozmiestnené buď pozdĺž hlavnej osi (od hlavného začiatku po hlavný koniec), alebo pozdĺž priečnej osi (od krížového začiatku po krížový koniec).

hlavná os – hlavná os, pozdĺž ktorej sú rozložené flexibilné položky.Upozorňujeme, že musí byť horizontálne, všetko závisí od kvality odôvodnenia obsahu.
hlavný štart | main-end - flexibilné predmety sú umiestnené v kontajneri z hlavnej-začiatočnej polohy do hlavnej-koncovej polohy.
hlavná veľkosť - šírka alebo výška flex položky v závislosti od zvolenej základnej veľkosti.Základným rozmerom môže byť šírka alebo výška prvku.
krížová os - krížová os kolmá na hlavnú.Jeho smer závisí od smeru hlavnej osi.
krížový štart | krížový koniec - ohybné vedenia sú naplnené predmetmi a umiestnené v kontajneri z krížovej počiatočnej polohy a krížovej koncovej polohy.
veľkosť kríža - šírka alebo výška flex položky v závislosti od zvoleného rozmeru sa rovná tejto hodnote.Táto vlastnosť sa zhoduje so šírkou alebo výškou prvku v závislosti od vybratého rozmeru.


Vlastnosti
displej: flex | inline-flex;

Definuje flexibilný kontajner (inline alebo blok na základe vybranej hodnoty), spája flexibilný kontext pre všetky jeho bezprostredné potomky.

zobrazenie: iné hodnoty | flex | inline-flex;

Mysli na to:

Stĺpce CSS nefungujú s flexibilným kontajneromfloat, clear a vertical-align nefungujú s flexibilnými predmetmi

flex-direction

Aplikuje sa pred rodičom flex kontajnera.

Nastaví hlavnú os na hlavnú os, čím určí smer pre flexibilné položky umiestnené v kontajneri.

Smer ohybu: riadok | rad-spiatočka | stĺpec | stĺpec-spätne

riadok (predvolené): zľava doprava pre ltr, sprava doľava pre rtl;
rad-reverz: sprava doľava pre ltr, zľava doprava pre rtl;
stĺpec: rovnaký ako riadok, zhora nadol;
column-reverse: Podobne ako row-reverse, zdola nahor.

ohybný obal

Aplikuje sa pred rodičom flex kontajnera.

Určuje, či je kontajner jednoriadkový alebo viacriadkový, ako aj smer krížovej osi určuje smer, v ktorom budú umiestnené nové riadky.

flex-wrap: nowrap | zabaliť | wrap-reverse

nowrap (predvolené): jeden riadok / zľava doprava pre ltr, sprava doľava pre rtl;
wrap: multiline / zľava doprava pre ltr, sprava doľava pre rtl;
wrap-reverse: multiline / sprava doľava pre ltr, zľava doprava pre rtl.

flex-flow

Aplikuje sa pred rodičom flex kontajnera.

Toto je skratka pre vlastnosti flex-direction a flex-wrap, ktoré spolu definujú hlavnú os a priečnu os.Predvolene je riadok nowrap.

flex-flow< ‘flex-direction’> || < ‘Flex-wrap’>

ospravedlniť-obsah

Aplikuje sa pred rodičom flex kontajnera.

Určuje zarovnanie vzhľadom na hlavnú os.Pomáha vyčleniť voľný priestor v prípade, keď sa líniové prvky „nenaťahujú“, resp. nenaťahujú, ale už dosiahli svoju maximálnu veľkosť.Umožňuje tiež určitú kontrolu nad zarovnaním položiek, keď idú mimo.

zdôvodniť obsah: flexibilný štart | ohybný koniec | centrum | medzera medzi | priestor okolo

flex-start (predvolené): položky sú posunuté na začiatok riadku;
ohybný koniec: položky sa tlačia na koniec radu;
stred: položky sú zarovnané do stredu riadku;
medzera medzi: prvky sú rozmiestnené rovnomerne (prvý prvok je na začiatku riadku, posledný je na konci)
priestor okolo: položky sú rozmiestnené rovnomerne s rovnakou vzdialenosťou medzi sebou a mimo riadku.

ospravedlniť-obsah
align-items

Aplikuje sa pred rodičom flex kontajnera.

Definuje predvolené správanie pre umiestnenie ohybných položiek vzhľadom na krížovú os na aktuálnom riadku.Predstavte si to ako verzie zarovnania obsahu naprieč osami (kolmé na hlavnú os).

align-items: flex-start | ohybný koniec | centrum | základná línia | natiahnuť

flexibilný štart: hranica krížového štartu pre položky umiestnené na pozícii krížového štartu;
ohybný koniec: okraj krížového konca pre položky umiestnené v polohe krížového konca;
stred: položky sú zarovnané na stred krížovej osi;
základná línia: prvky sú zarovnané na základnú líniu;
natiahnuť (predvolené): Prvky sa natiahnu, aby vyplnili kontajner (na základe minimálnej šírky / maximálnej šírky).


align-items
zarovnať-obsah

Aplikuje sa pred rodičom flex kontajnera. Zarovná riadky ohybného kontajnera, keď je na priečnej osi voľný priestor, podobne ako zarovnanie obsahu na hlavnej osi. Poznámka: Táto vlastnosť nefunguje s jednoriadkovými flexboxmi.

align-content: flex-start | ohybný koniec | centrum | medzera medzi | priestor okolo | natiahnuť

flex-start: čiary sú zarovnané vzhľadom na začiatok kontajnera;
ohybný koniec: čiary sú zarovnané vzhľadom na koniec nádoby;
stred: čiary sú zarovnané na stred nádoby;
medzera medzi: riadky sú rozmiestnené rovnomerne (prvý riadok na začiatku riadku, posledný na konci)
priestor okolo: riadky sú rovnomerne rozmiestnené s rovnakými rozstupmi;
natiahnuť (predvolené): Natiahne čiary, aby vyplnili voľný priestor.

zarovnať-obsah
objednať

V predvolenom nastavení sú flexibilné položky usporiadané v pôvodnom poradí.Vlastnosť objednávky však môže ovládať poradie, v ktorom sú umiestnené v kontajneri.

objednávka 1

flex-grow

Platí pred detskou / flexibilnou položkou. Určuje schopnosť flexibilnej položky „rásť“ podľa potreby.Nadobudne bezrozmernú hodnotu, slúži ako podiel.Určuje, koľko voľného miesta vo vnútri kontajnera môže prvok zabrať. Ak majú všetky položky flex-grow nastavený na 1, potom každé dieťa dostane v nádobe rovnakú veľkosť.Ak nastavíte jedného z potomkov na 2, potom zaberie dvakrát toľko miesta ako ostatní.

flex-grow (predvolená hodnota 0)

flex-zmršťovanie

Platí pred detskou / flexibilnou položkou.

Určuje schopnosť ohybnej položky zmenšiť sa podľa potreby.

flex-zmršťovanie (predvolená hodnota 1)

Záporné čísla nie sú akceptované.
flexibilný základ

Platí pred detskou / flexibilnou položkou. Určuje predvolenú veľkosť prvku pred pridelením priestoru v kontajneri.

flexibilný základ | auto (predvolené auto)

flex

Platí pred detskou / flexibilnou položkou. Toto je skratka pre flex-grow, flex-shrink a flex-base.Druhý a tretí parameter (flex-shrink, flex-base) sú voliteľné.Predvolená hodnota je 0 1 auto.

flex: žiadny | [< ‘Flex-grow «> <» flex-shrink’>? || < ‘Flex-basis’>]

zarovnať sa

Platí pred detskou / flexibilnou položkou. Umožňuje prepísať predvolené zarovnanie alebo položky zarovnania pre jednotlivé flexibilné položky. Pre lepšie pochopenie dostupných hodnôt si pozrite popis vlastnosti align-items.

align-self: auto | flexibilný štart | ohybný koniec | centrum | základná línia | natiahnuť

Príklady
Začnime veľmi, veľmi jednoduchým príkladom, ktorý sa vyskytuje takmer každý deň: zarovnajte presne na stred.S použitím flexboxu to už nemôže byť jednoduchšie.

Rodič (displej: flex; výška: 300px;) .child (šírka: 100px; / * Dostatočne dobrý * / výška: 100px; / * Dobrý dobrý * / okraj: auto; / * Magic! * /)

Tento príklad sa spolieha na skutočnosť, že okraj pod flex kontajnerom, nastavený na auto, pohltí priestor navyše, takže úloha vyplnenia týmto spôsobom zarovná prvok presne do stredu oboch osí. Teraz použijeme niektoré vlastnosti.Predstavte si sadu 6 prvkov s pevnou veľkosťou (pre krásu), ale s možnosťou zmeniť veľkosť nádoby.Chceme ich rozložiť rovnomerne vodorovne, aby všetko vyzeralo dobre, keď sa zmení veľkosť okna prehliadača (žiadne @ media queries!).

Flex-kontajner (
/ * Najprv vytvorte flexibilný kontext * /
displej: flex;

/ * Teraz definujte smer prúdenia a či chceme prvky
zabalené do nového riadku
* Pamätajte, že je to rovnaké ako:
* Smer ohybu: riadok;
* Flex-wrap: wrap;
* /
flex-flow: zábal riadkov;

/ * Teraz definujme, ako bude priestor pridelený * /
}

Pripravený. Všetko ostatné je už otázkou registrácie. Skúsme niečo iné.Predstavte si, že chceme navigáciu zarovnanú doprava úplne hore na našej stránke, ale chceme, aby bola zarovnaná na stred pre stredne veľké obrazovky a aby sa stala jedným stĺpcom pre malé obrazovky.Všetko je dostatočne jednoduché.

/ * Veľké obrazovky * /
.navigácia (
displej: flex;
flex-flow: zábal riadkov;
/ * Posúva prvky na koniec riadku pozdĺž hlavnej osi * /
justify-content: flex-end;
}

všetky médiá a (maximálna šírka: 800 pixelov) (
.navigácia (
/ * Pri stredne veľkých obrazovkách zarovnáme navigáciu na stred,
rovnomerné rozloženie voľného priestoru medzi prvkami * /
justify-content: space-around;
}
}

/ * Malé obrazovky * /
všetky médiá a (maximálna šírka: 500 pixelov) (
.navigácia (
/ * Na malých obrazovkách namiesto riadku vložíme položky do stĺpca * /
smer ohybu: stĺpec;
}
}

Poďme sa hrať s flexibilitou flexibilných predmetov!Čo tak trojstĺpcové rozloženie vhodné pre mobilné zariadenia s hlavičkou a pätou na celú šírku?A v inom poradí usporiadania.

Obálka (
displej: flex;
flex-flow: zábal riadkov;
}

/ * Nastaviť všetky prvky na šírku 100 % * /
.header, .main, .nav, .aside, .footer (
flex 1100%;
}

/ * V tomto prípade sa zameriame na pôvodnú objednávku
* Mobilné zariadenia:
* 1 hlavička
* 2 navig
* 3 hlavné
*4 bokom
* 5 pätiek
* /

/ * Stredné obrazovky * /
všetky médiá a (min. šírka: 600 pixelov) (
/ * Obidva bočné panely sú na rovnakom riadku * /
.strana (flex: 1 auto;)
}

/ * Veľké obrazovky * /

Stručne povedané, usporiadanie s Flexbox nám poskytuje jednoduché riešenia na kedysi ťažké úlohy. Napríklad, keď potrebujete zarovnať prvok vertikálne, alebo stlačiť pätu na spodok obrazovky, alebo len vložiť niekoľko blokov do jedného radu tak, aby zaberali všetok voľný priestor. Podobné úlohy sa dajú vyriešiť bez flex. Ale spravidla sú tieto riešenia skôr "barlami" - trikmi, ako použiť css na iné účely. Zatiaľ čo s flexboxom sú takéto úlohy vyriešené presne tak, ako to flex model zamýšľal.

Modul CSS Flexible Box Layout Module, v skratke flexbox, bol vytvorený na odstránenie nedostatkov pri vytváraní širokej škály HTML štruktúr, vrátane tých, ktoré sú prispôsobené rôznym šírkam a výškam, a aby bolo rozloženie logické a jednoduché. Logický prístup spravidla funguje na neočakávaných miestach, kde výsledok nebol testovaný - logika je naše všetko!

Flexbox vám umožňuje elegantne ovládať širokú škálu parametrov prvkov v kontajneri: smer, poradie, šírku, výšku, zarovnanie pozdĺž a naprieč, rozloženie voľného priestoru, naťahovanie a zmršťovanie prvkov.

Základné znalosti

FlexBox pozostáva z kontajnera a jeho položiek (flex položiek).

Ak chcete povoliť flexbox, ktorýkoľvek prvok HTML potrebuje iba nastaviť vlastnosť display na css: flex; alebo displej: inline-flex; ...

1
2

Po zapnutí vlastnosti flex sa vo vnútri kontajnera vytvoria dve osi: hlavná a krížová (kolmá (⊥), krížová os). Všetky vnorené prvky (prvá úroveň) sú zarovnané pozdĺž hlavnej osi. V predvolenom nastavení je hlavná os vodorovná a má smer zľava doprava (→) a krížová os je vertikálna a smeruje zhora nadol (↓).

Hlavnú a krížovú os je možné zameniť, potom budú prvky umiestnené zhora nadol (↓) a keď prestanú zapadať do výšky, budú sa pohybovať zľava doprava (→) - teda osi sa jednoducho vymenia. V tomto prípade sa začiatok a koniec usporiadania prvkov nemení - menia sa iba smery (osi)! Preto si treba predstaviť osi vo vnútri nádoby. Netreba si však myslieť, že existujú nejaké „fyzické“ osi a tie niečo ovplyvňujú. Os je tu len smer pohybu prvkov vo vnútri nádoby. Napríklad, ak sme zadali zarovnanie prvkov v strede hlavnej osi a potom zmenili smer tejto hlavnej osi, potom sa zarovnanie tiež zmení: prvky boli v strede horizontálne a boli v strede vertikálne. Pozri príklad.

Ďalšou dôležitou vlastnosťou Flex-boxu je prítomnosť radov v priečnom smere. Aby sme pochopili, o čom hovoríme, predstavme si, že existuje hlavná vodorovná os, prvkov je veľa a „nelezú“ do nádoby, takže sa presunú do iného radu. Tie. kontajner vyzerá takto: kontajner, vo vnútri sú dva riadky, každý riadok obsahuje niekoľko prvkov. Prezentovali ste? Teraz si pamätajte, že môžeme vertikálne zarovnať nielen prvky, ale aj riadky! Ako to funguje, je jasne vidieť na príklade nehnuteľnosti. A takto to vyzerá schematicky:

Vlastnosti CSS, ktoré môžu ovplyvniť model rozloženia: float, clear, vertical-align, columns nefungujú vo flexibilných návrhoch. Používa iný model na zostavenie rozloženia a tieto vlastnosti css sú jednoducho ignorované.

Vlastnosti CSS Flexboxu

Flexbox obsahuje rôzne pravidlá css na ovládanie celého dizajnu flex. Niektoré je potrebné aplikovať na hlavný kontajner a iné na prvky tohto kontajnera.

Pre kontajner

zobraziť:

Zapne vlastnosť flex pre položku. Samotný prvok a jeho vnorené prvky spadajú pod túto vlastnosť: ovplyvnení sú iba potomkovia prvej úrovne – stanú sa prvkami flex kontajnera.

  • flex- prvok sa roztiahne do celej šírky a má svoj plný priestor medzi okolitými blokmi. Riadky sú zabalené na začiatku a na konci bloku.
  • inline-flex- prvok je obalený okolo iných prvkov. Zároveň je jeho vnútorná časť naformátovaná ako blokový prvok a samotný prvok je naformátovaný ako vložený.

flex a inline-flex sa líšia v tom, že interagujú odlišne s okolitými prvkami, ako napríklad display: block a display: inline-block.

ohybový smer:

Mení smer hlavnej osi kontajnera. Podľa toho sa mení aj priečna os.

  • riadok (predvolené)- smer prvkov zľava doprava (→)
  • stĺpec- smer prvkov zhora nadol (↓)
  • riadok-spätne- smer prvkov sprava doľava (←)
  • stĺpec-spätne- smer prvkov zdola nahor ()
ohybný obal:

Riadi presun položiek, ktoré nie sú v kontajneroch.

  • nowrap (predvolené)- vnorené prvky sú usporiadané v jednom riadku (so smerom = riadok) alebo v jednom stĺpci (so smerom = stĺpec), bez ohľadu na to, či sú umiestnené v kontajneri alebo nie.
  • obal- zahŕňa presun prvkov do ďalšieho radu, ak sa nezmestia do kontajnera. Tým sa zapne pohyb prvkov pozdĺž priečnej osi.
  • wrap-reverse- take ze zabalit len ​​prenos nebude dole, ale hore (v opacnom smere).
flex-flow: smerové zavinutie

Kombinuje vlastnosti flex-direction a flex-wrap. Často sa používajú spolu, takže vlastnosť flex-flow bola vytvorená na písanie menšieho množstva kódu.

flex-flow akceptuje hodnoty týchto dvoch vlastností oddelené medzerou. Alebo môžete zadať jednu hodnotu pre ľubovoľnú vlastnosť.

/ * len flex-direction * / flex-flow: riadok; flex-flow: rad-reverzný; flex-flow: kolóna; flex-flow: stĺpcový-reverzný; / * iba flex-wrap * / flex-flow: nowrap; flex-flow: zábal; flex-flow: wrap-reverse; / * obe hodnoty naraz: flex-direction a flex-wrap * / flex-flow: row nowrap; flex-flow: obal kolóny; flex-flow: stĺpec-obrátený obal-obrátený; ospravedlniť obsah:

Zarovná prvky pozdĺž hlavnej osi: ak smer = riadok, potom vodorovne a ak smer = stĺpec, potom zvislo.

  • flexibilný štart (predvolené)- prvky začnú od začiatku (na konci môže byť medzera).
  • ohybný koniec- prvky sú zarovnané na koniec (na začiatku zostane medzera)
  • stred- v strede (priestor zostane vľavo a vpravo)
  • priestor-medzi- krajné prvky sú pritlačené k okrajom (priestor medzi prvkami je rovnomerne rozložený)
  • priestor okolo- voľný priestor je rovnomerne rozdelený medzi prvky (krajné prvky nie sú pritlačené k okrajom). Priestor medzi okrajom nádoby a krajnými prvkami bude polovičný ako priestor medzi prvkami v strede radu.
  • priestor-rovnomerne
zarovnať obsah:

Zarovná riadky obsahujúce položky pozdĺž krížovej osi. Rovnaké ako justify-content len ​​pre opačnú os.

Poznámka: Funguje, keď sú aspoň 2 riadky, t.j. ak je len 1 riadok, nič sa nestane.

Tie. if flex-direction: row táto vlastnosť zarovná neviditeľné riadky vertikálne ¦. Tu je dôležité poznamenať, že výška bloku musí byť pevne nastavená a musí byť väčšia ako výška riadkov, inak samotné rady natiahnu nádobu a akékoľvek zarovnanie stráca zmysel, pretože medzi nimi nie je voľný priestor. ... Ale keď flex-direction: column, tak sa riadky pohybujú vodorovne → a šírka kontajnera je takmer vždy väčšia ako šírka riadkov a zarovnanie riadkov hneď dáva zmysel ...

  • natiahnuť (predvolené)- riadky sú natiahnuté, aby úplne vyplnili čiaru
  • flexibilný štart- riadky sú zoskupené v hornej časti nádoby (na konci môže byť miesto).
  • ohybný koniec- riadky sú zoskupené v spodnej časti kontajnera (na začiatku zostane medzera)
  • stred- riadky sú zoskupené v strede nádoby (pri okrajoch zostane priestor)
  • priestor-medzi- vonkajšie rady sú pritlačené k okrajom (priestor medzi radmi je rovnomerne rozložený)
  • priestor okolo- voľný priestor je rovnomerne rozložený medzi radmi (extrémne prvky nie sú pritlačené k okrajom). Priestor medzi okrajom nádoby a krajnými prvkami bude polovičný ako priestor medzi prvkami v strede radu.
  • priestor-rovnomerne- rovnaké ako priestor okolo, len vzdialenosť medzi vonkajšími prvkami a okrajmi nádoby je rovnaká ako medzi prvkami.
zarovnať položky:

Zarovná prvky pozdĺž krížovej osi v rámci radu (neviditeľný riadok). Tie. samotné riadky sú zarovnané cez align-content a prvky vo vnútri týchto riadkov (riadky) cez align-items, a to všetko pozdĺž priečnej osi. Neexistuje žiadne takéto oddelenie pozdĺž hlavnej osi, neexistuje žiadna koncepcia riadkov a prvky sú zarovnané pomocou justify-content.

  • natiahnuť (predvolené)- prvky sú natiahnuté, aby úplne vyplnili čiaru
  • flexibilný štart- prvky sú stlačené na začiatok radu
  • ohybný koniec- prvky sú stlačené na koniec radu
  • stred- prvky sú zarovnané na stred riadku
  • základná línia- prvky sú zarovnané na základnú čiaru textu

Pre kontajnerové prvky

ohybný rast:

Určuje faktor zväčšenia položky, keď je v kontajneri voľné miesto. Štandardne flex-grow: 0 t.j. žiadny z prvkov by nemal rásť a zapĺňať prázdny priestor v nádobe.

Predvolený flexibilný rast: 0

  • Ak sú všetky prvky nastavené na flex-grow: 1, potom sa všetky natiahnu rovnakým spôsobom a vyplnia všetok voľný priestor v nádobe.
  • Ak zadáte flex-grow: 1 k jednému z prvkov, vyplní všetok voľný priestor v kontajneri a zarovnanie cez justify-content už nebude fungovať: nie je voľné miesto, nie je čo zarovnávať ...
  • S flexibilným rastom: 1. Ak má jeden z nich flex-grow: 2, potom bude 2-krát väčší ako všetky ostatné.
  • Ak majú všetky flex boxy vo vnútri flex kontajnera flex-grow: 3, budú mať rovnakú veľkosť
  • S flexibilným rastom: 3. Ak má jeden z nich flex-grow: 12, potom bude 4-krát väčší ako všetky ostatné.

Ako to funguje? Povedzme, že kontajner je široký 500 pixelov a obsahuje dva prvky, každý so základnou šírkou 100 pixelov. To znamená, že v kontajneri je 300 voľných pixelov. Teraz, ak je prvý prvok nastavený na flex-grow: 2; a druhý ohybný rast: 1; , potom bloky zaberú celú dostupnú šírku kontajnera a šírka prvého bloku bude 300px a druhého 200px. Vysvetľuje to skutočnosť, že dostupných 300 pixelov voľného miesta v kontajneri bolo rozdelených medzi prvky v pomere 2: 1, + 200 pixelov k prvému a + 100 pixelov k druhému.

Poznámka: v hodnote môžete použiť zlomkové čísla, napríklad: 0,5 - flex-grow: 0,5

flex-zmrštenie:

Určuje redukčný faktor pre prvok. Opak flex-grow určuje, ako sa má prvok zmenšiť, ak v nádobe nezostane miesto. Tie. vlastnosť začne fungovať, keď je súčet veľkostí všetkých prvkov väčší ako veľkosť kontajnera.

Predvolené flexibilné zmrštenie: 1

Povedzme, že kontajner je široký 600 pixelov a obsahuje dve položky, každú so šírkou 300 pixelov – flexibilný základ: 300 pixelov; ... Tie. dva prvky úplne naplnia nádobu. Prvá položka je flex-zmršťovacia: 2; a druhé ohybné zmrštenie: 1; ... Teraz zmenšíme šírku kontajnera o 300px, t.j. prvky sa musia zmenšiť o 300 pixelov, aby sa zmestili do kontajnera. Budú sa zmenšovať v pomere 2:1, t.j. prvý blok sa zmenší o 200px a druhý o 100px a nové veľkosti prvkov budú 100px a 200px.

Poznámka: v hodnote môžete použiť zlomkové čísla, napríklad: 0,5 - flex-shrink: 0,5

flexibilný základ:

Nastavuje základnú šírku prvku – šírku pred vypočítaním ostatných podmienok ovplyvňujúcich šírku prvku. Hodnota môže byť špecifikovaná v px, em, rem, %, vw, vh atď. Konečná šírka bude závisieť od šírky základne a flex-rastu, flex-zmršťovania a obsahu vo vnútri bloku. Pri automatickom nastavení je prvku priradená základná šírka vzhľadom na obsah v ňom.

Predvolené: auto

Niekedy je lepšie pevne zakódovať šírku prvku pomocou známej vlastnosti width. Napríklad šírka: 50 %; bude znamenať, že prvok vo vnútri nádoby bude presne 50%, ale to bude stále udržiavať vlastnosti flex-rast a flex-zmršťovanie. To môže byť užitočné, keď je prvok natiahnutý obsahom v ňom za špecifikovanú flexibilnú základňu. Príklad.

flex-basis bude „tuhý“, ak sa vymaže natiahnutie a zmrštenie: flex-base: 200px; ohybný rast: 0; flex-zmrštenie: 0; ... Toto všetko sa dá napísať takto flex: 0 0 200px; ...

flex: (základ rastu a zmršťovania)

Tri vlastnosti v skratke: flex-grow flex-shrink flex-base.

Predvolené: flex: 0 1 auto

Môžete však zadať jednu alebo dve hodnoty:

Flex: žiadny; / * 0 0 auto * / / * číslo * / flex: 2; / * flex-grow (flex-základ ide na 0) * / / * nie číslo * / flex: 10em; / * flex-base: 10em * / flex: 30px; / * flex-base: 30px * / flex: auto; / * flex-base: auto * / flex: content; / * flex-base: content * / flex: 1 30px; / * flex-grow a flex-base * / flex: 2 2; / * flex-rast a flex-zmršťovanie (flex-základ ide na 0) * / flex: 2 2 10 %; / * flex-grow a flex-shrink a flex-base * / align-self:

Umožňuje zmeniť vlastnosť align-items len pre individuálnu položku.

Predvolené: z kontajnera align-items

  • natiahnuť- prvok je natiahnutý, aby úplne vyplnil čiaru
  • flexibilný štart- prvok je stlačený na začiatok riadku
  • ohybný koniec- prvok je stlačený na koniec riadku
  • stred- prvok je zarovnaný na stred čiary
  • základná línia- prvok je zarovnaný k základnej čiare textu

objednať:

Umožňuje zmeniť poradie (pozícia, poloha) prvku v spoločnom riadku.

Predvolené: poradie: 0

V predvolenom nastavení majú prvky poradie: 0 a sú umiestnené v poradí, v akom sa zobrazujú v kóde HTML a v smere riadku. Ak však zmeníte hodnotu vlastnosti objednávky, prvky budú usporiadané v poradí hodnôt: -1 0 1 2 3 .... Napríklad, ak zadáte poradie: 1 pre jeden z prvkov, potom budú najskôr všetky nuly a potom prvok s 1.

Môžete teda napríklad hodiť prvý prvok na koniec, pričom nezmeníte smer pohybu ostatných prvkov alebo HTML kódu.

Poznámky

Aký je rozdiel medzi flex-base a šírkou?

Nižšie sú uvedené dôležité rozdiely medzi základňou flex a šírkou / výškou:

    flex-base funguje len pre hlavnú os. To znamená, že pri flex-direction: row flex-base riadi šírku a pri flex-direction: column riadi výšku. ...

    flex-base sa vzťahuje len na flex položky. To znamená, že ak vypnete flex na kontajneri, táto vlastnosť nebude mať žiadny vplyv.

    Absolútne prvky kontajnera sa nezúčastňujú na flex dizajne ... čo znamená, že základ flex neovplyvňuje prvky flex kontajnera, pokiaľ majú absolútnu polohu: absolútnu. Budú musieť špecifikovať šírku / výšku.

  • Pri použití vlastnosti flex 3 je možné hodnoty (flex-grow / flex-shrink / flex-basis) kombinovať a zapisovať krátko, zatiaľ čo šírka rast alebo zmršťovanie sa musí zapisovať oddelene. Napríklad: flex: 0 0 50 % == šírka: 50 %; flex-zmrštenie: 0; ... Niekedy je to jednoducho nepohodlné.

Vždy, keď je to možné, držte sa flex-base. Šírku použite len vtedy, keď flex-báza nie je vhodná.

Líši sa flex-základ od šírky – chyba alebo funkcia?

Obsah vo vnútri flexibilnej položky ju rozširuje a nemôže ísť mimo nej. Ak však nastavíte šírku prostredníctvom šírky alebo maximálnej šírky, a nie základu flex, potom prvok vo vnútri kontajnera flex bude môcť ísť za tento kontajner (niekedy je to správanie, ktoré potrebujete). Príklad:

Príklady rozloženia Flex

Príklady nikdy nepoužívajú predpony pre kompatibilitu medzi prehliadačmi. Urobil som to pre ľahké čítanie css. Pozrite si preto príklady v najnovších verziách prehliadača Chrome alebo Firefox.

# 1 Jednoduchý príklad s vertikálnym a horizontálnym zarovnaním

Začnime s najjednoduchším príkladom - zarovnanie vertikálne a horizontálne súčasne a v akejkoľvek výške bloku, dokonca aj gumového.

Stredný text

Alebo takto, bez bloku vo vnútri:

Stredný text

# 1.2 Oddelenie (medzera) medzi prvkami flex bloku

Ak chcete umiestniť prvky kontajnera pozdĺž okrajov a ľubovoľne vybrať prvok, po ktorom bude prestávka, musíte použiť vlastnosť margin-left: auto alebo margin-right: auto.

# 2 responzívne flexibilné menu

Urobme si menu úplne hore na stránke. Na širokouhlej obrazovke by mala byť vpravo. V priemere zarovnajte na stred. A na malom by mal byť každý prvok na novom riadku.

# 3 responzívne 3 stĺpce

Tento príklad ukazuje, ako rýchlo a pohodlne je možné vyrobiť 3 stĺpiky, ktoré sa po zúžení zmenia na 2 a potom na 1.

Upozorňujeme, že to môžete urobiť bez použitia pravidiel pre médiá, všetko je flexibilné.

1
2
3
4
5
6

Prejdite na stránku jsfiddle.net a zmeňte šírku sekcie „výsledok“.

# 4 citlivé boxy na flex

Povedzme, že potrebujeme zobraziť 3 bloky, jeden veľký a dva malé. V tomto prípade je potrebné, aby sa bloky prispôsobili malým obrazovkám. Robíme:

1
2
3

Prejdite na stránku jsfiddle.net a zmeňte šírku sekcie „výsledok“.

# 5 Galéria o ohybe a prechode

Tento príklad ukazuje, ako rýchlo si môžete vyrobiť pekný flex akordeón s obrázkami. Všimnite si vlastnosť prechodu pre flex.

# 6 Flex to flex (len príklad)

Úlohou je vytvoriť flexibilný blok. Aby bol začiatok textu v každom bloku na rovnakej vodorovnej čiare. Tie. ako sa šírka zužuje, bloky rastú do výšky. Je potrebné, aby obrázok bol hore, tlačidlo bolo vždy dole a text v strede začínal pozdĺž jednej vodorovnej čiary ...

Na vyriešenie tohto problému sa bloky samotné ohýbajú a nastavuje sa maximálna možná šírka. Každý vnútorný blok je tiež flexibilná konštrukcia s otočeným smerom ohybu: stĺpik; a prvok v strede (kde je text) je natiahnutý flex-grow: 1; aby sa zaplnil celý voľný priestor, takto sa dosiahne výsledok - text začal na jednom riadku ...

Viac príkladov

Podpora prehliadača – 98,3 %

Plná podpora samozrejme neexistuje, ale všetky moderné prehliadače podporujú konštrukcie flexboxov. Pre niektorých je ešte potrebné špecifikovať predpony. Pre reálny obraz sa pozrime na caniuse.com a uvidíme, že 96,3 % dnes používaných prehliadačov bude fungovať bez predpon, s 98,3 % predponami. Toto je skvelý indikátor na spoľahlivé používanie flexboxu.

Aby som vedel, ktoré predpony sú dnes (jún 2019) relevantné, uvediem príklad všetkých pravidiel flex s potrebné predpony:

/ * Kontajner * / .flex (displej: -webkit-box; display: -ms-flexbox; display: flex; display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; -orientácia-webkit-box: vertikálna;-smer-webkit-boxu: normálna; -ms-flex-direction: stĺpec; flex-direction: stĺpec; -ms-flex-wrap: wrap; flex-wrap: wrap; -ms -flex-flow: obal stĺpca; flex-flow: obal stĺpca; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: medzera-medzi; -ms-flex-line-pack: distribute; align-content: space-around;) / * Items * / .flex-item (-webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; -ms-flex- negatívny: 2; flex-zmrštenie: 2; -ms-flex-preferred-size: 100px; flex-base: 100px; -ms-flex: 1 2 100px; flex: 1 2 100px; -ms-flex-item-align : center; align-self: center; -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2;)

Je lepšie, ak predponované vlastnosti idú pred pôvodnú vlastnosť.
V tomto zozname nie sú žiadne zbytočné (podľa caniuse) prefixy, ale vo všeobecnosti existuje viac prefixov.

Chrome Safari Firefox Opera IE Android iOS
20- (starý) 3.1+ (staré) 2-21 (staré) 10 (tweener) 2.1+ (staré) 3.2+ (staré)
21+ (nové) 6.1+ (nové) 22+ (nové) 12.1+ (nové) 11+ (nové) 4.4+ (nové) 7.1+ (nové)
  • (nové) - nová syntax: display: flex; ...
  • (tweener) - Stará neoficiálna syntax z roku 2011: display: flexbox; ...
  • (staré) je stará syntax z roku 2009: display: box;

Video

No nezabudni na video, aj tam je to niekedy zaujímavé a zrozumiteľné. Tu je niekoľko populárnych:

Užitočné odkazy Flex

    flexboxfroggy.com je vzdelávacia hra flexbox.

    Flexplorer je intuitívny tvorca flexibilného kódu.