Čo je Flexbox? Popis všetkých vlastností css, základných princípov, výhod a nevýhod. Flexbox niekoľko užitočných príkladov práce s užitočnými odkazmi Flex
Flexboxy sú ideálne na vytváranie bežne používaných rozložení webových stránok, ako je napríklad trojstĺpcový, takzvaný „svätý grál“, kde by všetky stĺpce mali zaberať plnú výšku bez ohľadu na ich obsah. V tomto prípade je v zdrojovom kóde hlavný obsah pred navigáciou a na samotnej stránke je hlavný obsah po navigácii.
Páči sa ti to.
Pred príchodom flexboxu bolo dosť ťažké získať tento druh rozloženia bez použitia nejakého hacku. Vývojári museli často robiť veci, ako je pridávanie ďalších značiek, používanie záporných okrajov a ďalšie triky, aby sa všetko správne zoradilo bez ohľadu na množstvo obsahu alebo veľkosť obrazovky. Ako však ukazuje príklad vyššie, na flexboxe je všetko oveľa jednoduchšie.
Tu je zhrnutie kódu. V tomto príklade urobíme z prvku #main flexibilný kontajner, pričom hlavičku a pätu ponecháme ako prvky na úrovni bloku. Inými slovami, iba stredná časť sa stáva flexboxom. Tu je úryvok, ktorý z neho robí flexibilný kontajner.
#hlavný ( displej: flex; min-výška: calc(100vh - 40vh); )
Na výrobu flex kontajnera používame len display: flex. Všimnite si, že sme tiež nastavili hodnotu min-height pomocou funkcie calc() a nastavili #main na 100 % výšky výrezu mínus výška uzáveru a suterénu (každý 20vh). To zaisťuje, že rozloženie zaberie celú výšku obrazovky, aj keď má málo obsahu. V dôsledku toho sa päta nikdy nezvýši a nezostane pod ňou prázdne miesto, ak obsah zaberie menej ako výšku obrazovky.
Výpočet minimálnej výšky bol dosť jednoduchý vzhľadom na to, že sme na všetky prvky použili veľkosť boxu: border-box. Ak by sme to neurobili, museli by sme pridať hodnota výplne na sumu, ktorá sa má odpočítať.
Po inštalácii flex kontajnera sa zaoberáme flex položkami.
#hlavný > článok ( flex: 1; ) #main > nav, #main > aside ( flex: 0 0 20vw; background: beige; ) #main > nav (poradie: -1; )
Vlastnosť flex je skratka pre vlastnosti flex-grow, flex-shrink a flex-base. V prvom prípade sme napísali iba jednu hodnotu, takže flex nastavuje vlastnosť flex-grow. V druhom prípade sme napísali všetky tri hodnoty pre
V tomto článku sa zoznámime s technológiou CSS Flexbox, určenou 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 je veľmi jednoduché a flexibilné usporiadať prvky v kontajneri, rozdeliť medzi ne dostupný priestor a zarovnať ich tak či onak, aj keď nemajú špecifickú veľkosť.
CSS Flexbox uľahčuje vytváranie responzívneho dizajnu ako používanie float a polohovania.
Flexbox je možné použiť ako pre CSS označenie celej stránky, tak aj jej jednotlivých blokov.
Podpora prehliadača CSS Flexbox
CSS Flexbox podporujú všetky v súčasnosti používané moderné prehliadače (s použitím prefixov: 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 značiek CSS pomocou Flexbox začína nastavením vlastnosti zobrazenia CSS požadovaného prvku HTML na možnosť flex alebo flex-inline .
Potom sa tento prvok stane flexibilným kontajnerom a všetkým okamžitý podradené prvky sú flexibilné položky. Navyše, keď hovoríme o flexboxe, myslíme tým iba prvok s display:flex alebo display:flex-inline a všetky prvky priamo nachádza v ňom. V CSS Flexbox teda existujú iba dva typy prvkov: flex kontajner a flex prvok.
Pre podporu rozloženia vo väčšine prehliadačov boli do CSS pridané vlastnosti predpony a maximálnej šírky.
Na „premenu“ bloku na flexibilný kontajner sa používa trieda riadkov. Nastavenie šírky prvkov .col__article a .col__aside vo vnútri kontajnera flex sa vykonáva pomocou vlastnosti flex CSS.
Ako príklad si rozložíme ďalšiu pätu pomocou flexboxu a vytvoríme blok pozostávajúci z troch prvkov v prvku .col__article (minimálna šírka jedného prvku je 300px). Do päty umiestnime štyri bloky (minimálna šírka jedného bloku je 200px).
Chcel by som hovoriť o FlexBoxe. Modul rozloženia Flexbox (flexibilný box – „flexibilný blok“, 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 typov displejov a veľkostí obrazoviek).Flexibilná nádoba naťahuje predmety, aby zaplnila priestor, alebo ich stláča, aby sa zabránilo pretečeniu.
Najdôležitejšie je, že rozloženie flexboxu je na rozdiel od bežného rozloženia nezávislé od smeru (boxy sú naskladané zvisle a vložené prvky vodorovne).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, stlačenie atď.).
Pretože flexbox je celý modul, nie len jedna vlastnosť, kombinuje mnoho vlastností.Niektoré z nich musia byť aplikované na kontajner (nadradeného prvku, známeho ako flexibilný kontajner), zatiaľ čo iné vlastnosti sa vzťahujú na podradené prvky alebo flexibilné položky.
Zatiaľ čo bež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ú položky 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ú umiestnené flexibilné položky.Upozorňujeme, že musí byť horizontálne, všetko závisí od kvality odôvodnenia obsahu.
hlavný štart | main-end - flex položky sú umiestnené v kontajneri z hlavnej-začiatočnej polohy do hlavnej-koncovej polohy.
hlavná veľkosť - šírka alebo výška ohybného prvku v závislosti od zvolenej hlavnej veľkosti.Základnou hodnotou môže byť šírka alebo výška prvku.
krížová os — priečna os kolmá na hlavnú.Jeho smer závisí od smeru hlavnej osi.
krížový štart | cross-end - ohybné linky sú naplnené predmetmi a umiestnené do kontajnera z krížovej počiatočnej polohy a krížovej koncovej polohy.
veľkosť kríža - šírka alebo výška flex prvku v závislosti od zvoleného rozmeru sa rovná tejto hodnote.Táto vlastnosť je rovnaká ako šírka alebo výška prvku v závislosti od zvoleného rozmeru.
Vlastnosti
displej: flex | inline-flex;
Definuje flexibilný kontajner (buď vložený alebo blokový v závislosti od vybranej hodnoty), zahŕňa flexibilný kontext pre všetky jeho bezprostredné potomky.
zobrazenie: iné hodnoty | flex | inline-flex;
Mysli na to:
Stĺpce CSS nefungujú s kontajnerom Flexfloat, clear a vertical-align nefungujú na flexibilných predmetoch
smer ohybu
Aplikuje sa pred nadradený prvok flex kontajnera.
Nastavuje hlavnú os, čím definuje smer pre ohybné predmety umiestnené v kontajneri.
Smer ohybu: riadok | rad-reverzný | stĺpec | stĺpec obrátene
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: podobný riadku, zhora nadol;
stĺpec-obrátiť: podobne ako riadok-obrátiť, zdola nahor.
flex zábal
Aplikuje sa pred nadradený prvok flex kontajnera.
Určuje, či je kontajner jednoradový alebo viacriadkový, ako aj smer priečnej osi, určuje smer, v ktorom budú umiestnené nové vedenia.
flex-wrap: nowrap | zabaliť | zabaliť rub
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.
flexibilný tok
Aplikuje sa pred nadradený prvok flex kontajnera.
Toto je skratka pre vlastnosti flex-direction a flex-wrap, ktoré spolu definujú hlavnú a priečnu os.Predvolene je riadok nowrap.
flexibilný tok< ‘flex-direction’> || < ‘Flex-wrap’>
ospravedlniť-obsah
Aplikuje sa pred nadradený prvok flex kontajnera.
Určuje zarovnanie vzhľadom na hlavnú os.Pomáha prideľovať voľné miesto v prípade, keď prvky radu nie sú "natiahnuté", alebo natiahnuté, ale už dosiahli svoju maximálnu veľkosť.Umožňuje vám tiež trochu kontrolovať zarovnanie prvkov pri prechode za čiaru.
zdôvodniť obsah: flexibilný štart | ohybný koniec | centrum | medzera medzi | priestor okolo
flex-start (predvolené): položky sú posunuté na začiatok riadku;
flex-end: prvky sú posunuté na koniec riadku;
stred: prvky sú zarovnané do stredu riadku;
medzera medzi: prvky sú rozmiestnené rovnomerne (prvý prvok na začiatku riadku, posledný prvok na konci)
space-around: prvky sú rovnomerne rozmiestnené s rovnakou vzdialenosťou medzi sebou a mimo radu.
ospravedlniť-obsah
align-items
Aplikuje sa pred nadradený prvok flex kontajnera.
Určuje predvolené správanie pre umiestnenie ohybných položiek vzhľadom na krížovú os na aktuálnom riadku.Predstavte si to ako verziu obsahu zarovnania pre krížovú os (kolmú na hlavnú).
align-items: flex-start | ohybný koniec | centrum | základná línia | natiahnuť
flex-start: hranica krížového štartu pre prvky umiestnené na pozícii krížového štartu;
ohybný koniec: okraj krížového konca pre prvky umiestnené v polohe krížového konca;
stred: prvky sú zarovnané na stred krížovej osi;
základná línia: prvky sú zarovnané na základnú líniu;
natiahnuť (predvolené): prvky sa natiahnu tak, aby vyplnili kontajner (v závislosti od minimálnej šírky / maximálnej šírky).
align-items
zarovnať obsah
Aplikuje sa pred nadradený prvok flex kontajnera. Zarovná čiary ohybnej nádoby, 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: riadky sú zarovnané do stredu nádoby;
medzera medzi: riadky sú rovnomerne rozmiestnené (prvý riadok na začiatku riadku, posledný riadok na konci)
priestor okolo: čiary sú rozmiestnené rovnomerne s rovnakou vzdialenosťou medzi sebou;
natiahnuť (predvolené): Čiary sa natiahnu, 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 sa zobrazia v kontajneri.
objednávka 1
flex-grow
Aplikuje sa pred detským / ohybným prvkom. Určuje schopnosť flexibilného prvku „rásť“ podľa potreby.Nadobudne bezrozmernú hodnotu, slúži ako podiel.Určuje, koľko voľného miesta vo vnútri kontajnera prvok zaberie. Ak majú všetky prvky vlastnosť flex-grow nastavenú na 1, potom každý potomok dostane v kontajneri rovnakú veľkosť.Ak nastavíte jedno z detí na 2, potom zaberie dvakrát toľko miesta ako ostatné.
flex-grow
flex-shrink
Aplikuje sa pred detským / ohybným prvkom.
Určuje, či sa ohybný prvok môže v prípade potreby zmenšiť.
flex-shrink
Záporné čísla nie sú akceptované.
flexibilný základ
Aplikuje sa pred detským / ohybným prvkom. Určuje predvolenú veľkosť pre prvok pred pridelením priestoru v kontajneri.
flexibilný základ
flex
Aplikuje sa pred detským / ohybným prvkom. 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
Aplikuje sa pred detským / ohybným prvkom. Umožňuje prepísať predvolené zarovnanie alebo zarovnanie položiek 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 s veľmi, veľmi jednoduchým príkladom, ktorý sa deje takmer denne: zarovnanie presne do stredu.S použitím flexboxu nie je nič jednoduchšie.
Rodič ( displej: flex; výška: 300px; ) .child (šírka: 100px; / * Správne * / výška: 100px; / * Správne * / okraj: auto; / * Kúzlo! * / )
Tento príklad sa spolieha na skutočnosť, že okraj pod flex kontajnerom nastavený na auto pohltí priestor navyše, takže úloha odsadenia týmto spôsobom zarovná prvok presne na stred na oboch osiach. Teraz použijeme niektoré vlastnosti.Predstavte si sadu 6 prvkov pevnej veľkosti (pre krásu), ale s možnosťou zmeniť veľkosť nádoby.Chceme ich rozložiť rovnomerne vodorovne, aby pri zmene veľkosti okna prehliadača všetko vyzeralo dobre (žiadne @media queries!).
Flex-kontajner (
/* Najprv vytvorte flexibilný kontext */
displej:flex;
/* Teraz určme smer toku a či chceme prvky
presunuté na nový riadok
* Pamätajte, že je to rovnaké ako:
* Smer ohybu: riadok;
* Flex-wrap: wrap;
* /
flex-flow: zábal riadkov;
/* Teraz definujme, ako bude priestor rozdelený */
}
Pripravený. Všetko ostatné je vecou dizajnu. Skúsme niečo iné.Predstavte si, že chceme navigáciu zarovnanú doprava na samom vrchu našej stránky, ale chceme, aby bola na stredne veľkých obrazovkách zarovnaná na stred a na malých obrazovkách sa stala jedným stĺpcom.Všetko je celkom jednoduché.
/* Veľké obrazovky */
.navigation(
displej:flex;
flex-flow: zábal riadkov;
/* Posunie prvky na koniec riadku pozdĺž hlavnej osi */
justify-content: flex-end;
}
všetky médiá a (maximálna šírka: 800 pixelov) (
.navigation(
/* Pri stredne veľkých obrazovkách vycentrujeme navigáciu,
rovnomerné rozloženie voľného priestoru medzi prvkami * /
justify-content: priestor okolo;
}
}
/* Malé obrazovky */
všetky médiá a (maximálna šírka: 500 pixelov) (
.navigation(
/* Na malých obrazovkách namiesto riadku usporiadame prvky 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í.
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 pri zacielení spoliehame na pôvodnú objednávku
* Mobilné zariadenia:
* 1 hlavička
*2nav
* 3 hlavné
*4 bokom
* 5 stôp
* /
/* Stredne veľké 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 */
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, ako pristúpime k jeho popisu, poďme zistiť, čo je zlé na metódach rozloženia, ktoré teraz používame?
Každý písací stroj pozná niekoľko spôsobov, ako niečo zarovnať vertikálne alebo vytvoriť 3-stĺpcové rozloženie s gumeným stredný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, ť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 sa stránka rozdelila na bloky s tabuľkami, potom prišlo do módy sádzať floatom a po oficiálnej smrti ie6 pribudli triky s inline blokmi. Výsledkom je, že sme zdedili výbušnú zmes všetkých týchto techník používaných na vytvorenie rozložení pre 99,9 % všetkých existujúcich webových stránok.
Viacriadková organizácia blokov vo vnútri flex kontajnera.
flex zábal
Všetky príklady, ktoré sme uviedli vyššie, boli zostavené s ohľadom na jednoriadkové (jednostĺpcové) usporiadanie blokov. Musím povedať, že štandardne flex kontajner vždy umiestni bloky vo vnútri do jedného riadku. Špecifikácia však podporuje aj viacriadkový režim. Vlastnosť CSS flex-wrap je zodpovedná za viac riadkov v rámci flex kontajnera.
Dostupné hodnoty flex zábal:
- nowrap (predvolená hodnota): 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 zabaliť, ale bloky sú v opačnom poradí.
flex-flow je šikovná skratka pre flex-direction + flex-wrap
Flex-flow v skutočnosti poskytuje možnosť opísať smer hlavnej a viacnásobnej priečnej osi v jednej vlastnosti. V predvolenom nastavení flex-flow: row nowrap .
Flex-flow:<‘flex-direction’> || <‘flex-wrap’>
css
/* t.j. ... */ .my-flex-block( flex-direcrion:column; flex-wrap: wrap; ) /* toto je to isté ako... */ .my-flex-block( flex-flow: column wrap ;)zarovnať obsah
Nechýba ani vlastnosť align-content, ktorá určuje, ako budú výsledné rady blokov vertikálne zarovnané a ako budú zdieľať celý priestor flex kontajnera.
Dôležité: align-content funguje iba vo viacriadkovom režime (t. j. v prípade flex-wrap:wrap; alebo flex-wrap:wrap-reverse;)
Dostupné hodnoty zarovnať obsah:
- flex-start: rady blokov sa tlačia na začiatok flex kontajnera.
- flex-end: rady blokov sú tlačené na koniec flex kontajnera
- stred: rady blokov sú v strede flex kontajnera
- medzera medzi: prvý rad blokov sa nachádza na začiatku flex kontajnera, posledný rad blokov je blok na konci, všetky ostatné rady sú rovnomerne rozmiestnené v zostávajúcom priestore.
- priestor okolo: Riadky blokov sú rovnomerne rozmiestnené od začiatku po koniec flexibilného kontajnera, čím sa všetok voľný priestor rozdeľuje rovnomerne.
- natiahnuť (predvolená hodnota): Riadky blokov sú natiahnuté tak, aby zaberali všetok dostupný priestor.
Vlastnosti CSS flex-wrap a align-content sa musia použiť priamo na flex kontajner, nie na jeho potomkov.
Ukážka viacriadkových vlastností vo flexe
Pravidlá CSS pre podradené prvky flexibilného kontajnera (flex bloky)
flex-base - veľkosť základne jedného flex bloku
Nastaví počiatočnú veľkosť hlavnej osi pre flex box predtým, ako sa naň použijú transformácie založené na iných faktoroch flex. Dá sa nastaviť v ľubovoľnej jednotke dĺžky (px , em , % , ...) alebo automaticky (predvolené). Ak je nastavené na auto, za základ sa berú rozmery bloku (šírka, výška), ktoré zase môžu závisieť od veľkosti obsahu, ak nie sú výslovne uvedené.
flex-grow – „nežravosť“ jediného flex bloku
Určuje, o koľko môže byť jednotlivý flex box väčší ako susedné položky, ak je to potrebné. flex-grow nadobúda bezrozmernú hodnotu (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, bude 2x 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. Určuje jeho stupeň „chamtivosti“ vo vzťahu k iným flexibilným blokom 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 predmetmi 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-bloku pozdĺž priečnej osi.
Umožňuje prepísať vlastnosť align-items flex kontajnera pre individuálny flex box.
Dostupné hodnoty align-self (rovnakých 5 možností ako pre align-items)
- flex-start: flex box sa zatlačí na začiatok priečnej osi
- flex-end: flex box je zatlačený na koniec priečnej osi
- stred: flex box je umiestnený v strede priečnej osi
- základná čiara: flex box zarovnaný so základnou čiarou
- natiahnuť (predvolená hodnota): Flex box je natiahnutý tak, aby zaberal všetok dostupný priestor na priečnej osi, pričom sa berie do úvahy minimálna / maximálna šírka, ak existuje.
objednávka - poradie jedného flex bloku vo vnútri 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 polohy prvku.
HTML
V tomto prípade budú bloky nasledovať za sebou 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 si môžete obľúbiť prinajmenšom za to, že horizontálne zarovnanie, ktoré pozná každý cez okraj: auto tu funguje aj pre vertikálne!
My-flex-container ( display: flex; height: 300px; /* Alebo čokoľvek */ ) .my-flex-block ( width: 100px; /* Alebo čokoľvek */ height: 100px; /* Alebo čokoľvek * / margin: auto; /* Magic! Krabica je vycentrovaná vertikálne a horizontálne! */ )
Veci na zapamätanie
- Nemali by ste používať flexbox tam, kde to nie je potrebné.
- V mnohých prípadoch je stále užitočné, aby definícia regiónov a zmena poradia obsahu závisela od štruktúry stránky. Premyslite si to.
- Porozumieť flexboxu a poznať základy. Vďaka tomu je oveľa jednoduchšie dosiahnuť očakávaný výsledok.
- Nezabudnite na marže. Zohľadňujú sa pri nastavovaní zarovnania osí. Je tiež dôležité si uvedomiť, že okraje flexboxu sa „nezrútia“ ako pri normálnom toku.
- Hodnota float flex blokov sa neberie do úvahy a nezáleží na tom. To sa pravdepodobne dá nejako využiť na elegantnú degradáciu pri prechode na flexbox.
- flexbox sa veľmi dobre hodí na rozvrhnutie webových komponentov a jednotlivých častí webových stránok, ale nedarilo sa mu pri rozložení základných rozložení (pozícia článku, hlavička, päta, navigačná lišta atď.). Stále je to sporné, ale tento článok ukazuje nedostatky pomerne presvedčivo 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 zaujme dôstojné miesto pri riešení veľkého množstva úloh. A určite s ním teraz musíte skúsiť pracovať. Konkrétnym príkladom práce s flex-layoutom bude venovaný jeden z nasledujúcich článkov. Prihláste sa na odber noviniek ;)
Vlastnosť align-content nastavuje typ zarovnania čiar vo vnútri ohybného kontajnera pozdĺž priečnej osi, keď je voľný priestor.
Vzťahuje sa na: ohybná nádoba.
Predvolená hodnota: natiahnuť.
Pružné štartovacie čiary sú umiestnené na začiatku priečnej osi. Každý ďalší riadok je zarovnaný s predchádzajúcim. ohybný koniec Čiary sú umiestnené od konca priečnej osi. Každý predchádzajúci riadok je zarovnaný s nasledujúcim. stred Čiary sú umiestnené v strede kontajnera. space-between Riadky sú v nádobe rozmiestnené rovnomerne a vzdialenosť medzi nimi je rovnaká. space-around Čiary sú rozmiestnené rovnomerne, takže priestor medzi dvoma susednými čiarami je rovnaký. Biele miesto pred prvým riadkom a za posledným riadkom sa rovná polovici medzery medzi dvoma susednými riadkami. priestor-rovnomerne Riadky sú rozdelené rovnomerne. Biele miesto pred prvým riadkom a za posledným riadkom má rovnakú šírku ako ostatné riadky. stretch Linky sú rovnomerne natiahnuté, aby vyplnili voľný priestor.
Vlastnosť align-content zarovnáva čiary ohybného kontajnera v ohybnom kontajneri, keď je na krížovej osi priestor navyše, podobne ako justify-content zarovnáva jednotlivé položky v rámci hlavnej osi. Všimnite si, že táto vlastnosť nemá žiadny vplyv na jednoriadkový flexibilný kontajner. Hodnoty majú nasledujúci význam:
Poznámka: Iba viacriadkové flexibilné nádoby majú vždy voľný priestor v priečnej osi na zarovnanie šnúr, pretože v jednoriadkovej flexibilnej nádobe sa jediná šnúra automaticky natiahne, aby vyplnila priestor.
Týka sa: ohybné nádoby.
Počiatočné: natiahnuť.
Flex-start Lines sú balené smerom k začiatku flex kontajnera. Priečna začiatočná hrana prvého riadku v ohybnom kontajneri je umiestnená v jednej rovine s priečnym začiatočným okrajom ohybného kontajnera a každá nasledujúca línia je umiestnená v jednej rovine s predchádzajúcou líniou. flex-end Linky sú balené smerom ku koncu flex kontajnera. Hrana priečneho konca posledného riadku je umiestnená v jednej rovine s okrajom krížového konca ohybnej nádoby a každý predchádzajúci riadok je umiestnený v jednej rovine s nasledujúcou líniou. stred Riadky sú balené smerom k stredu flex kontajnera. Čiary v ohybnom kontajneri sú umiestnené v jednej rovine s ostatnými a zarovnané v strede ohybného kontajnera s rovnakým priestorom medzi priečnym začiatočným okrajom ohybného kontajnera a prvou líniou v ohybnom kontajneri a medzi priečny koniec obsahu okraja flex nádoby a posledný riadok v flex nádobe. (Ak je zostávajúci voľný priestor záporný, čiary pretečú rovnomerne v oboch smeroch.) Medzera medzi čiarami Čiary sú rovnomerne rozložené vo flexibilnom kontajneri. Ak je zostávajúci voľný priestor záporný, táto hodnota je totožná s flexibilným štartom. V opačnom prípade sa priečna začiatočná hrana prvého riadku vo flexibilnom kontajneri umiestni v jednej rovine s priečnym začiatočným okrajom obsahu flexibilného kontajnera, priečna koncová hrana posledného riadku vo flexibilnom kontajneri sa umiestni v jednej rovine s priečnym okrajom obsahu. okraj koncového obsahu ohybného kontajnera a zostávajúce čiary v ohybnom kontajneri sú rozdelené tak, že rozstup medzi akýmikoľvek dvoma susednými líniami je rovnaký. space-around Linky sú rovnomerne rozmiestnené vo flexibilnom kontajneri s polovičnými medzerami na oboch koncoch. Ak je zvyšné voľné miesto záporné, táto hodnota je identická so stredom. V opačnom prípade sú čiary v ohybnom kontajneri rozdelené tak, že vzdialenosť medzi akýmikoľvek dvoma susednými líniami je rovnaká a vzdialenosť medzi prvými/poslednými líniami a okrajmi ohybného kontajnera je polovičná ako vzdialenosť medzi ohybnými líniami. priestor-rovnomerné Linky sú rovnomerne rozmiestnené vo flexibilnom kontajneri. Ak je zvyšné voľné miesto záporné, táto hodnota je identická so stredom. V opačnom prípade sú čiary v ohybnom kontajneri rozmiestnené tak, že rozstup medzi všetkými ohybnými líniami je rovnaký. natiahnuť Čiary sa natiahnu, aby zabrali zostávajúce miesto. Ak je zostávajúci voľný priestor záporný, táto hodnota je totožná s flex-start. V opačnom prípade sa voľný priestor rozdelí rovnomerne medzi všetky riadky, čím sa zväčší ich krížová veľkosť.