CSS Flexi elemendid elementide vahel. Joondamine plokid CSS-i abil Flex Container

CSS Flexbox (Paindlik kasti paigutusmoodul) - Paindliku konteineri paigutuse moodul on paigaldamise meetod, põhjal telje põhineb.

Flexbox koosneb välja flex konteiner (Flex konteiner) ja paindlikud esemed (Flex esemed). Paindlikud elemendid saab sisse ehitada stringisse või kolonni ja ülejäänud vaba ruumi jaotatakse nende vahel mitmel viisil.

Flexboxi moodul võimaldab teil lahendada järgmised ülesanded:

  • Asetage elemendid ühes neljast suunast: vasakult paremale, paremale vasakule, ülevalt alla või alt üles.
  • Olulised elementide kuvamise kord.
  • Määrake objektide mõõtmed automaatselt nii, et need sobiksid taskukohase ruumi.
  • Lahenda probleem horisontaalsete ja vertikaalsete keskustega.
  • Kandke konteineri elemendid üle, võimaldamata selle ülevoolu.
  • Loo sama kõrguse veerud.
  • Luua pressitud lehe allosas.

Flexbox lahendab konkreetsed ülesanded - ühemõõtmeliste paigutuste loomine, näiteks navigeerimispaneel, kuna painde elemendid saab paigutada ainult ühele telgedele.

Loetelu praeguste probleemide mooduli ja rist brauseri lahendusi neile saate lugeda Philip Waltoni artikkel.

Mis on Flexbox

Toetage brausereid

IE: 11.0, 10,0 -M-
Firefox: 28.0, 18,0 -Moz-
Chrome: 29.0, 21.0-mebkit-
Safari: 6.1 -Mebkit-
Opera: 12.1 -Mebkit
iOS Safari: 7.0-MEBKIT-
Opera Mini: 8
Android brauser: 4.4, 4.1 -Mebkit-
Chrome android: 44

1. Põhikontseptsioonid

Joonis fig. 1. Flexbox mudel

Flexboxi mooduli kirjeldamiseks kasutatakse konkreetseid mõisteid. Flex-vooluhulga väärtus ja salvestusrežiim määrab nende terminite vastavus füüsilistele juhistele: Üles / parempoolsed / alt / vasak, telg: vertikaalne / horisontaalne ja suurus: laiuse / kõrgus.

Peamine telg - telje, millele painduvad elemendid on sätestatud. See laiendab peamiselt mõõtmist.

Peamine algus- ja põhiala - Liinid, mis määratlevad flex konteineri alg- ja viimasel küljel, võrreldes painde elemendid (alustades põhilise otsa suunas).

Peamine suurus) - painde konteineri või paindude elementide laius või kõrgus, sõltuvalt asjaolust, et neid peamiselt mõõdetakse, määravad flex konteineri peamine suurus või flex element.

Ristlõike - Axis risti põhiteljega. See ulatub ristisuunas.

Risti algus- ja ristlõike - liinid, mis määratlevad põiktelgide esialgse ja viimasel küljel võrreldes painde elemendid.

Risti suurus) - Flex-konteineri või paindude elementide laius või kõrgus, sõltuvalt sellest, mis on põikmõõtmes, on nende ristsuurum.


Joonis fig. 2. Rida ja veerg režiim

2. Flex-konteiner

Flex konteiner seab selle sisu jaoks uue paindliku vormindamise konteksti. Flex konteiner ei ole ploki konteiner, mistõttu sellised CSS-i omadused nagu float, selge, vertikaalne-align ei tööta lastelementide jaoks. Samuti ei mõjuta Flex konteiner kolonn- * omadusi, luues kõlarid tekstis ja pseudo-elemendid :: Esimese line ja :: Esimese kirja.

Flexboxi märgistuse mudel on seotud CSS-i väärtusega CSS-i omandi väärtusega IS-i allvalimiste plokkide sisaldava ema-valimisplokkide esindusest. Selle mudeli elementide juhtimiseks peate seadistama ekraani vara järgmiselt:

Flex-konteiner (/ * genereerib flex-konteineri ploki * / ekraan: -webkit-flex; ekraan: flex;) .flex-konteiner (/ * genereerib flex-konteineri stringitase * / kuva Kuva: Inline-Flex;)

Pärast nende omaduste väärtuste paigaldamist muutub iga lapseelement automaatselt flex elemendiks, seadistades ühes reas (peamine telg). Sellisel juhul käituvad plokid ja väiketähed võrdselt, st. Laius plokkide võrdub nende sisu laiusega, võttes arvesse elemendi sisemisi valdkondi ja raamid.


Joonis fig. 3. Valime elemendid Flexboxi mudelis

Kui vanemplokk sisaldab teksti või pilte ilma ümbristeta, muutuvad nad anonüümseks flex elemendid. Tekst on tasandamine ülemise serva konteineri ploki ja kõrgus pildi muutub võrdseks ploki kõrgusega, st. See on deformeerunud.

3. Flex-elemendid

Flex-elemendid - plokid, mis esindavad flex konteineri sisu voolu. Flex konteiner kehtestab uue vormingu konteksti selle sisu jaoks, mis põhjustab järgmisi funktsioone:

  • Flex elementide puhul on nende väärtuse kuvamise väärtus blokeeritud. Ekraani väärtus: Inline-plokk; ja ekraan: tabel-rakk; arvutatakse ekraanil: plokk; .
  • Tühja ruumi elementide vahele kaob: see ei muutu oma flex-elemendiks, isegi kui elementidevaheline tekst on pakitud anonüümse flex elementi. Anonüümse Flex elemendi sisu jaoks on võimatu määrata oma stiile, kuid see pärsib neid (näiteks fondiparameetreid) flex konteinerist.
  • Absoluutselt paigutatud Flex Element ei osale paigutuse paigutusel.
  • Mark-väljad külgnevad flex elemendid ei varises.
  • Marginaali ja polstri protsentuaalväärtused arvutatakse nende sisaldava ploki sisemise suuruse põhjal.
  • marginaal: Auto; Laieneb, absorbeerides täiendavat ruumi sobiva mõõtmise. Neid saab kasutada külgnevate painduvate elementide joondamiseks või levitamiseks.
  • Flexi elementide automaatne minimaalne suurus vaikimisi on selle sisu minimaalne suurus, st min-laius: auto; . Konteinerite kerimise jaoks on automaatne minimaalne suurus tavaliselt null.

4. Flex-elemendid ja orientatsioon

Flex konteineri sisu saab lagundada mis tahes suunas ja mis tahes järjekorras (ümberkorraldamine painduva elementide sees konteiner mõjutab ainult visuaalne renderdamine).

4.1. Peamise telje suund: Flex-suund

Vara kuulub Flex konteinerisse. Haldab peamise telje suunda, mis, mis on painde elemendid virnastatud, vastavalt praegusele salvestusrežiimile. Ei ole päritud.

flex-suunas.
Väärtused:
Rida Vaikeväärtus vasakult paremale (RTL paremale vasakule). Flex elemendid on paigutatud stringis. Peamise telje alguses (põhiala) ja lõpp-(põhiala) suunad vastavad inline telje (inline-telje) algusele (inline-algus) ja lõpuni (inline-ots).
Rida-tagurpidi. Suund paremale vasakule (rtl vasakul paremale). Flex-elemendid on paigutatud konteineri parema servaga (RTL-vasakul).
veerg. Suund ülevalt alla. Flex elemendid on paigutatud veerus.
Kolonn-tagurpidi. Veerg elementidega vastupidises järjekorras, alt üles.
alg-
pärida.

Joonis fig. 4. Flex-suunas vara vasakpoolsete keelte jaoks

Süntaks

Flex-konteiner (ekraan: -webkit-Flex; -webkit-Flex-suunas: rida-tagurpidi; Ekraan: Flex; Flex-suund: rida-tagurpidi;)

4.2. Multi-Flex konteineri haldamine: Flex-Wrap

Kinnisvara määrab kindlaks, kas Flex Container on ühe rea või mitmeliiniga ja seab ka põiksaje suunda, mis määrab uute flex konteinerite paigaldamise suunda.

Vaikimisi painde elemendid virnastatakse ühes liinil peamises teljel. Kui ülevool, nad lähevad kaugemale piiri raami Flex konteiner. Vara ei ole päritud.


Joonis fig. 5. Multi-oja juhtimine LTR-keelte Flex-Wrap'i omaduste abil

Süntaks

Flex-konteiner (ekraan: -webkit-flex; -webkit-flex-wrap: wrap; ekraan: Flex; Flex-Wrap: Wrap;)

4.3. Kokkuvõte suunda ja multiplay: Flex-Flow

Kinnisvara võimaldab teil määrata suunad peamis- ja põikeljeid, samuti võimalus üle kanda Flex elemente vajadusel mitu rida. See on lühendatud salvestamine Flex-suunas ja Flex-Wrap Properties. Vaikeväärtus on flex-flow: rida nowrap; . Vara ei ole päritud.

Süntaks

Flex-konteiner (ekraan: -webkit-Flex; -webkit-Flex-Flow: rida mähk; ekraan: Flex; Flex-Flow: rida mähk;)

4.4. Flex Element Display Tellimus: Tellimus

Kinnisvara määrab kindlaks, millises järjekorras kuvatakse painde elemendid ja paiknevad paindliku konteineri sees. Kehtib flex-elementide kohta. Vara ei ole päritud.

Esialgu on kõik Flex elemendid tellida: 0; . Kui elemendi väärtuse täpsustades, liigub see aja alguses, väärtus 1 - lõpuni. Kui mitmel paindlik elemendil on sama tellimuse väärtus, kuvatakse need vastavalt esialgsele järjekorrale.

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; ekraan: Flex;) .flex-kirje (-MebKit järjekorras: 1; järjekorras: 1;)
Joonis fig. 6. Flex-elementide kuvamine

5. Paindlikud Flex elemendid

Paindliku paigutuse määrav aspekt on võime "painutada Flex-elementide" painutada ", muutes nende laius / kõrgus (sõltuvalt sellest, milline suurus on põhiteljel), et täita peamine mõõde. Seda tehakse Flex'i vara abil. Flex konteiner jaotab vaba ruumi oma lasteelementide vahel (proportsionaalselt nende flex-kasvava koefitsiendiga), et täita mahuti või surub neid (proportsionaalselt Flex-kahanemise koefitsiendiga), et vältida ülevoolu.

Flex element on täiesti "paindumatu", kui selle Flex-Grow ja Flex-Shrink väärtused on null ja "paindlik" teisiti.

5.1. Paindlike suuruste komplekt ühe varaga: Flex

Vara on flex-kasvava kasvava, flex-kahanemise ja flex-baaside omaduste lühendatud rekord. Vaikeväärtus: Flex: 0 1 Auto; . Saate määrata nii ühe kui ka kõik kolm omadust. Vara ei ole päritud.

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; kuvamine: Flex;).

5.2. Kasvutegur: Flex-Grow

Vara määrab ühe flex-elemendi kasvuteguri teiste painde elementide suhtes positiivse vaba ruumi jaotuse ajal painduskonteineris. Kui flex-kasvava painde elementide väärtuste summa stringis on väiksem kui 1, hõivavad nad vähem kui 100% vabast ruumist. Vara ei ole päritud.


Joonis fig. 7. Vaba ruumi haldamine navigeerimispaanil, kasutades Flex-Grow

Süntaks

Flex-konteiner (ekraan: -webkit-Flex; ekraan: Flex;) .flex-Punkt (-Mebkit-Flex-Grow: 3; Flex-Grow: 3;)

5.3. Tiinesuhe: Flex-Shrink

Kinnisvara näitab flex elemendi tihenduskoefitsienti teiste painde elementide suhtes negatiivse vaba ruumi jaotuse ajal. Korrutatakse flex-aluse põhiseadusega. Negatiivne ruum jaotatakse proportsionaalselt ajaga, kuidas elementi saab kerida, seetõttu ei vähene näiteks väike flex element nullini, kuni flex element on märgatavalt vähendatud. suurema suurusega. Vara ei ole päritud.


Joonis fig. 8. Flex elementide kitsenemine stringis

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; Display: Flex;) .flex-Oksjoni (-Webkit-Flex-Shrink: 3; Flex-kahanemine: 3;)

5.4. Põhisuurus: Flex-alus

Vara määrab esialgse peamise suuruse flex element enne jaotus vaba ruumi vastavalt paindlikkuse koefitsientidele. Kõigi väärtuste puhul, välja arvatud Auto ja sisu, on aluseline paindlik suurus määratletud ja laiuse horisontaalsete salvestusrežiimidega. Protsentiväärtused määratakse painduskonteineri suurusega võrreldes ja kui suurust ei ole määratud, on Flex-aluseks kasutatav väärtus selle sisu suurus. Ei ole päritud.

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; ekraan: Flexi;).

6. Joondamine

6.1. Peamise telje joondamine: põhjendatud sisu

Kinnisvara joondab Flex elemendid piki paindliku konteineri peamist telje, levitades vaba ruumi, tühjad flex elemendid. Kui üksus konverteeritakse painduskonteinerisse, on komplekteeritud vaikimisi Flexi elemendid kokku (kui marginaalivälja ei ole täpsustatud). Lüngad lisatakse pärast marginaalide väärtuste arvutamist ja paindlikkust. Kui ükskõik millisel elemendil on flex-kasvava või marginaali nullväärtus: auto; Vara ei mõjuta mingit mõju. Vara ei ole päritud.

Väärtused:
Flex-algus. Vaikeväärtus. Flex-elemendid on sätestatud suunas, mis pärineb Flex konteineri algjoonest.
Flex-end. Flex-elemendid on paigutatud välja painduskonteineri viimasest reast.
Keskus Flex elemendid on joondatud kesklinnas Flex konteiner.
Ruumi vahel. Flex elemendid on ühtlaselt jaotatud üle liini. Esimene flex-element paigutatakse esialgse joone servale, viimane Flex Element on loputada serva lõpprea ja ülejäänud flex elemendid liinil jaotatakse nii, et vahemaa kahe külgneva elemendi vahel on sama. Kui ülejäänud vaba ruum on negatiivselt või stringis, on ainult üks Flex element, see väärtus on identne Flex-Start parameetriga.
Ruumi ümber. Liinide flex-elemendid jaotatakse nii, et kahe külgneva Flex elemendi vaheline kaugus on sama ja vahemaa esimese / viimaste Flex elementide ja Flex konteineri servade vaheline kaugus vahemikus Flex elementide vahelisest kaugusest.
alg- Määrab vaikimisi vara väärtuse.
pärida. Pärsib vara väärtust vanemaelemendist.

Joonis fig. 9. Vaba ruumi elementide ja jaotamise vastavusse viimine, kasutades põhjendatud sisu omadusi

Süntaks

Flex-konteiner (ekraan: -webkit-Flex; -webkit-õigustatud sisu: Flex-Start; Display: Flex; põhjendatud sisu: Flex-Start;)

6.2. Joondage põiksalg: Align-esemed ja Align-Self

Flex elemendid saab joondada ristilje praeguse joone Flex konteineri. Align-esemed seab kõigis flex-konteinerielementide joondamise, kaasa arvatud anonüümsed flex elemendid. Align-Self võimaldab teil tühistada selle joondamise individuaalsete flex elementide jaoks. Kui mõni põikimarginaal Flex Element on Automaatne, ei ole align-füüsilisest mõju.

6.2.1. Align-esemed.

Kinnisvara aligns Flex Elements, sealhulgas Anonymous Flex elemendid põiksuunas. Ei ole päritud.

Väärtused:
Flex-algus.
Flex-end.
Keskus
Algtaseme Allfunktsioonidega seotud paindlike elementide põhiliinid langevad kokku.
Venitada.
alg- Määrab vaikimisi vara väärtuse.
pärida. Pärsib vara väärtust vanemaelemendist.
Joonis fig. 10. Elementide joondamine vertikaalkonteiseris

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; -Webkit-Align-elemendid: Flex-Start; Display: Flex; Align-esemed: Flex-Start;)

6.2.2. Align-ise.

Vara vastutab eraldi Flex elemendi joondamise eest flex-konteineri kõrgusel. Tühistab joondamistega määratud joondus. Ei ole päritud.

Väärtused:
Automaatne. Vaikeväärtus. Flex element kasutab joondamis-punktides Flex konteineri vara.
Flex-algus. Painde elemendi ülemine serv on tihedalt painduva liiniga (või kaugel, võttes arvesse täpsustatud marginaali väljad ja elementi piiriraamistikku), mis läbivad põiksaje alguses.
Flex-end. Painduva elemendi alumine serv asetatakse tihedalt flex-liiniga (või kaugel, võttes arvesse täpsustatud marginaali väljad ja elementi piiriraamistikku), mis läbivad ristlõike otsa.
Keskus Flex Element väljad on tsentreeritud põikteljele flex liinil.
Algtaseme Flex element on joondatud algtasemega.
Venitada. Kui flex elemendi põiksuuruses arvutatakse automaatse ja ükski varu ristmäär ei ole autoga võrdne, on element venitatud. Vaikeväärtus.
alg- Määrab vaikimisi vara väärtuse.
pärida. Pärsib vara väärtust vanemaelemendist.

Joonis fig. 11. Üksikute flex elementide joondamine

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; Display: Flex;) .flex-kirje (-Webkit-Align-Self: Center; Align-ise: keskus;)

6.3. Flex konteineri liinid: Align-sisu

Kinnisvaraliinid on paindliku konteineri jooned täiendava ruumi juuresolekul põikteljel, sarnaselt joondamiseks individuaalsed elemendid Peamises teljel, kasutades põhjendatud sisu. Vara ei mõjuta ühe line Flex konteinerit. Ei ole päritud.

Väärtused:
Flex-algus. Ridade salvestatakse Flex konteineri algusesse. Esimese rea serva paigutatakse painduva konteineri serva lähedal, iga järgneva - eelmise rea lähedal.
Flex-end. Ridade pannakse lõpuni painduskonteineri. Viimase rea serva paigutatakse lähedal Flex-konteineri serva lähedal, iga eelmine - järgneva rea \u200b\u200blähedal.
Keskus Ridade salvestatakse Flex konteineri keskele. Ridade paiknevad üksteise lähedal ja joondatud flex-konteineri keskele, millel on võrdne kaugus flex konteineri sisu esialgse serva ja esimese stringi ja flex konteineri sisu lõpliku serva vahel ja the viimane string.
Ruumi vahel. Ridade ühtlaselt jaotatakse Flex konteinerisse. Kui ülejäänud vaba ruum on negatiivne või Flex konteineril on ainult üks Flex Line, see väärtus on identne Flex-Start. Vastasel juhul paigutatakse esimese rea serva Flex-konteineri sisu esialgse serva lähedal, viimase rea serva on lähedal Flex konteineri sisu lõppse serva lähedal. Ülejäänud liinid jaotatakse nii, et kahe külgneva rida vahemaa on sama.
Ruumi ümber. Ridade ühtlaselt jaotatakse painduskonteineris poole ruumi mõlemas otsas. Kui ülejäänud vaba ruum on negatiivne, on see väärtus identne kesklinnaga. Vastasel juhul jaotatakse stringid nii, et kahe külgneva rida vahemaa on sama ja vahemaa esimese / viimaste ridade vahel ja painduskonteineri sisu servade vaheline kaugus vahemikus ridade vahemaast.
Venitada. Vaikeväärtus. Flex elementide read on ühtlaselt venitatud, täites kõik olemasolev ruum. Kui ülejäänud vaba ruum on negatiivne, on see väärtus identne Flex-algusega. Vastasel juhul jagatakse vaba ruum võrdselt kõigi ridade vahel, suurendades nende ristsuurusesse.
alg- Määrab vaikimisi vara väärtuse.
pärida. Pärsib vara väärtust vanemaelemendist.
Joonis fig. 12. Flex elementide mitmeliiniline joondus

Süntaks

Flex-konteiner (ekraan: -Webkit-Flex; -webkit-Flex-flow: rida mähkimine; -Mebkit-Align-sisu: Flex-End; Display: Flex; Flex-flow Kõrgus: 100px;)

Flexboxi paigutuse moodul (paindlik kast) on suunatud rohkem kui efektiivne meetod Vaba ruumi asukoht, joondus ja jaotamine konteineri elementide vahel, isegi kui nende suurus ei ole eelnevalt ja / või dünaamilises tundmatu (seetõttu "Flex").

Paindliku (Flex) Markuse põhiidee on pakkuda konteinerit võime muuta selle elementide laiuse / kõrguse (ja tellimuse), et parim viis Täitke olemasolev ruum (peamiselt paigutamiseks kõikide ekraanide tüüpide ja suuruste paigutamiseks). Flexboxi konteiner laiendab elemente vaba ruumi täitmiseks või nende surumiseks, et vältida ülevoolu.

Kõige tähtsam on see, et Flexbox on suunaline agnostiline erinevalt tavalistest paigutustest (plokid, mis põhinevad vertikaalsel positsioneerimisel ja stringidel põhinevad horisontaalse positsioneerimisel). Hoolimata asjaolust, et nad töötavad piisavalt hästi, neil puudub paindlikkus suurte või keeruliste rakenduste toetamiseks (eriti kui tegemist on orientatsiooni muutustega, suuruse muutmise, venitamise, kokkusurumise jms muutumisega jne).

Märge. Flexbox sobib sobivamalt rakenduste komponentide ja väikeste paigutuste jaoks, samas kui CSS Grid on mõeldud suuremate paigutuste jaoks.

Põhitõed ja terminoloogia

Kuna Flexbox on kogu moodul, mitte eraldi vara, sisaldab see palju erinevaid asju, sealhulgas kogu omaduste kogumit. Mõned neist on mõeldud oma konteineri paigaldamiseks (vanem element, mida tuntakse "Flex Container"), samas kui teised peavad olema paigaldatud lasteelementidega (tuntud kui "Flex elemendid").

Kui tavaline paigutusüsteem põhineb plokkide ja stringide juhistel, põhineb Flexbox Flex-voolu suundades ". Palun vaadake seda joonistamist spetsifikatsioonist, mis selgitab Flexboxi põhiidee.

Põhimõtteliselt asuvad elemendid peamine telg (põhilisest algusest lõpuni) või ristlõike (rist-algusest rist-otsast).

Toetage brausereid

CSS paindlik kasti paigutusmoodul

Chrome android

Brauser BlackBerry alustades 10 versiooniga toetab uut süntaksit.

Konteineri omadused

Omadused elementidele

Vanema elemendi omadused (Flex Container)

ekraan.

Määrab flex konteineri; String või plokk sõltub edastatud väärtusest. Sisaldab painduva konteksti kõigi selle otseste, lasteelementide jaoks.

Konteiner (ekraan: Flex; / * või interline-Flex * /)

Pange tähele, et CSS-veerud ei mõjuta Flex konteinerit.

flex-suunas.


Määrab peamise telje, määrab seega konteineris asuvate elementide suund. Flexbox (lisaks valikulisele ümbrisele) on ühesuunalise paigutuse mõiste. Mõtle flex-elementidele, peamiselt horisontaalsete joontena või vertikaalsete kõlaritena.

Konteiner (Flex-suund: rida ROW-Reverse | Kolonn | veeru vastupidine;)

  • rida (vaikimisi) - vasakult paremale LTR-is; Õigus RTL-i vasakule;
  • rida-tagurpidi. - õigus vasakule LTR-is; Vasakult paremale RTL-is;
  • veerg. - Sama asi on see rida, ainult ülevalt alt;
  • kolonn-tagurpidi. - Sama asi on rida-tagurpidi, ainult alt ülespoole;

flex-Wrap.


Vaikimisi püüavad esemed täita ainult ühe liini. Te saate seda käitumist muuta ja võimaldada vajadusel järgmisele reale üle kanda järgmisele reale.

Konteiner (Flex-Wrap: nowrap | wrap | wrap-vastupidine;)

  • nowrap (vaikimisi) - kõik painduvad elemendid asuvad ühel real;
  • wrap. - Flex elemendid asuvad mitmel real, ülevalt alla;
  • wrap-tagasi. - Flex elemendid asuvad mitmes reas, alt-üles;

sisustama


Määrab joonduse peamise teljega. See aitab levitada vaba ruumi järelejäänud järelejäänud pärast fikseeritud ja mitte fikseeritud painde elemendid on jõudnud maksimaalse suurusega. Samuti aitab see teha mõningaid kontrolle elementide joondamise üle, kui nad ülevoolavad stringi.

Konteiner (põhjendage sisu: Flex-Start | Flex-End | Center | Space-vahel | ruumi ümber;)

  • flex-Start (vaikimisi) - elemente vajutatakse rea algusesse;
  • flex-end. - elemendid pressitakse stringi otsa suunas;
  • keskus - elemendid asuvad kesklinnas mööda stringi;
  • ruumi vahel. - elemendid paigutatakse ühtlaselt reale; Esimene element on joone alguses, viimane element Asub joone lõpus;
  • ruumi ümber. - elemendid paigutatakse ühtlaselt sama ruumi nende läheduses. Pange tähele, et visuaalselt ruum ei ole sama, kuna kõik elemendid on mõlemal poolel sama ruum. Esimesel elemendil on konteineri poolel üks ruum, kuid kaks ühikut selle ja järgmise elemendi vahel, sest järgmisel elemendil on ka üks üksus kahest küljest.

align-esemed.


See vara määrab kindlaks flex elementide käitumise piki põikteljel praeguses liinil. Mõtle sellele O, ainult põiktelje jaoks (risti põhitelje).

Konteiner (Align-kirjed: Flex-Start | Flex-end | Center | Baasjoone | Stretch;)

  • flex-Start - Elemendid paigutatakse põiksaje algusesse;
  • flex-end - Elemendid paigutatakse põiktelje lõpus;
  • keskus - Elemendid asuvad põiktelje keskel;
  • algtaseme - elemendid joondatakse algväärtusega;
  • venitada (vaikimisi) - venitada kogu mahuti täitmiseks (veel täheldatud min-laius / max-laius);

align-sisu


Märge. See majutusasutus ei tööta, kui on ainult üks Flexi elementide rida.

Konteiner (Align-sisu: Flex-Start | Flex-end | Center | Space-vahel Space-umbes | venitada;)

  • flex-algus. - read asuvad konteineri alguses;
  • flex-end. - liinid asuvad konteineri lõpus;
  • keskus - read paigutatakse konteineri keskele;
  • ruumi vahel. - ridade jaotatakse ühtlaselt, esimene rida asub konteineri alguses ja viimane rida lõpus;
  • ruumi ümber. - ridade jaotatakse ühtlaselt sama kaugus nende vahel;
  • venitada (vaikimisi) - read on ülejäänu ülejäänud ruumi hõivamiseks venitatud;

Tütarettevõtete omadused (Flex Elements)

tellimus


Vaikimisi kõik elemendid asuvad algses järjekorras. Kuid tellimuse vara haldab järjekorda, kus konteineri sees olevad elemendid asuvad.

Üksus (tellimus: ; }

painduva.


Vara määrab võime suurendada vajaduse korral elementi suuruse suurendada. See võtab mõõteta väärtuse osana, mis määrab kindlaks, kuidas mahuti vaba ruumi kogus peaks elementi hõivama.

Kui kõik elemendid on flex-kasvava vara installitud 1, siis vaba ruumi konteineri sees jaotatakse ühtlaselt kõigi elementide vahel. Kui üks elementide väärtusest on seatud 2-ni, on element kaks korda rohkem ruumi kui ülejäänud (vähemalt proovige).

Üksus (Flex-Grow: ; / * Vaikimisi 0 * /)

Negatiivseid numbreid ei ole võimalik näidata.

flex-alus.

Määrab enne järelejäänud ruumi jaotumist vaikimisi elemendi suuruse. See võib olla pikkus (20%, 5REM jne) või märksõna. Auto märksõna tähendab "näeb välja nagu minu laius või kõrgus vara". Sisu märksõna tähendab, et "suurus põhineb elemendi sisu" on märksõna veel ei ole väga hästi toetatud, nii et see on raske kontrollida, ja veelgi raskem teada, mis teeb oma min-sisu, max- Sisu ja sisu sisu.

Üksus (Flex-alus: | Auto; / * Vaikimisi Auto * /)

Kui seadistatud 0, siis lisaruumi sisu ümber ei võeta arvesse. Kui installite Autot, jaotatakse lisaruumi väärtuse põhjal.

painduma

See on vähendamine ja. Teine ja kolmas parameetrid (Flex-Shrink ja Flex-alus) ei ole vajalikud. Vaikimisi väärtus on seatud 0 1 Auto.

Üksus (Flex: Puudub | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ] }

align-ise.


See majutusasutus võimaldab teil tühistada individuaalsete flex elementide vaikimisi joondamise (või vara abil).

Palun vaadake omaduste selgitust, et mõista olemasolevaid väärtusi.

Üksus (Align-Self: Auto | Flex-Start | Flex-End | Keskus | Baasjoone |)

Pange tähele, et float, selge ja vertikaalne alignaal ei mõjuta flex elementi.

Näited

Alustame lihtne näideOtsustav ülesanne, mis toimub peaaegu iga päev: täiuslik tsentreerimine. Kui te kasutate Flexboxi kasutate midagi lihtsamat.

Vanem (ekraan: Flex; kõrgus: 300px;) .Child (laius: 100px; kõrgus: 100px; marginaal: auto;)

See sõltub asjaolust, et painduskonteineri autosse installitud varu imendab lisaruumi. Seega muudab vertikaalse marginaali paigaldamine objektis automaatselt mõlemale teljele suurepäraselt keskele.

Nüüd kasutame veel mõned omadused. Kaaluge 6 elemendi loendit, kõik fikseeritud suurusega esteetilistes tingimustes, kuid need võivad olla automaatsed. Me tahame, et nad jagavad ühtlaselt piki horisontaalset telje ja nii, et brauseri suuruse muutmisel oleks kõik korras järjekorras (ilma meedia taotlusteta!).

Flex-konteiner (ekraan: Flex; Flex-Flow: rida mähk; õigusi sisu: ruumi ümber;)

Valmis! Kõik muu on vaid mõned disainiprobleemid. Allpool on näiteks Codepen'i näide, kindlasti mine sinna ja proovige muuta Windowsi suurust, et näha, mis juhtub.

Proovime midagi muud. Kujutage ette, et meil on navigatsioon, mis asub ekraani ülaosas paremas servas, kuid me tahame, et see asuks keskmise suurusega ekraanide keskel ja oli ühes veerus väikeste ekraanide puhul. Nii lihtne kui pirukas.

Navigation (Display: Flex; Flex-flow: rida mähk; õigustatud sisu: flex-end;) @media kõik ja (max-laius: 800px) (.Navigation (põhjendatud sisu: ruumi ümber;)) @media kõik ja (max-laius: 500px) (.Navigation (Flex-suund: veerg;))

Proovime teha midagi veelgi paremat teha, mängides meie Flex elementide paindlikkust! Aga kolmekäigulise mobiil-esimese paigutusega korgiga ja jalus kogu ekraani laiusega ja et elementide esialgset järjekorda ei ole sõltuvust.

Wrapper (ekraan: Flex; Flex-flow: rida mähk;) .Header, .main, .nav, .ASide, .Footer (Flex: 1 100%;) @media kõik ja (min-laius: 600px) (.aside (Flex: 1 auto;)) @media kõik ja (min-laius: 800px) (.main (Flex: 2 0px;) .ASide-1 (tellimus: 1;) .main (tellimus: 2;). (Tellimus: 3;) .footer (tellimus: 4;))

Seotud omadused

Vead

Loomulikult ei ole Flexbox ilma vigadeta. Parim kogumine, mida ma nägin, on esindatud Philip Walton ja Greg Whitworth "s Flexbugs. See on avatud lähtekoodiga koht, kus jälgida kõiki vigu, nii et ma arvan, et see on parim lihtsalt lahkuda lingilt.

Tellimuse vara haldab tellimust, kus lapse elemendid ilmuvad Flex konteineri sees. Vaikimisi asuvad nad järjekorras, mis on esialgu flex konteinerile lisatud.

Väärtused

.flex-kirje (tellimus:<целое число>; }

flexi elemente saab ümber korraldada selle lihtsa vara abil ilma HTML-koodi muutmata.

Vaikeväärtus: 0.

painduva.

See vara seab kasvuteguri, mis määrab, kui kaugele flex element suureneb võrreldes ülejäänud Flex elemente Flex konteiner, kui levitamisel positiivse vaba ruumi.

Väärtused

.flex-kirje (Flex-Grow:<число>; }

Kui kõik Flex-elemendid on sama flex-kasvava väärtusega, on kõik elemendid konteineris sama suurusega.

Teine Flex Element võtab rohkem ruumi teiste painde elementide suuruse suhtes.

Vaikeväärtus: 0.

flex-kahanema

flex-Shrink seab kokkusurumise koefitsiendi, mis määrab kindlaks, kui kaugele painde element surutakse painduva konteineri ülejäänud painde elementide suhtes negatiivse vaba ruumi jaotuse ajal.

Väärtused

.flex-kirje (Flex-Shrink:<число>; }

Vaikimisi saab kõik flex elemendid suruda, kuid kui me seame Flex-Shrink väärtuse nulli (ilma kokkusurumiseta), siis elemendid säilitavad algse suurusega.

Vaikeväärtus: 1.

Negatiivsed numbrid on vastuvõetamatud.

flex-alus.

See majutusasutus võtab sama tähendusi laius- ja kõrguse omadustena ning määratleb flex elemendi esialgse põhiseaduse, enne vaba ruumi jaotumist vastavalt koefitsientidele.

Väärtused

.flex-kirje (Flex-Base: Auto |<ширина>; }

flex-alus on määratud neljanda Flex elemendi jaoks ja dikteerib selle algset suurust.

Vaikeväärtus: Auto.

painduma

See majutusasutus on vähendamine paindlike kasvavate, Flex-Shrink ja Flex-aluse omaduste vähendamine. Muude väärtuste saaki saab paigaldada ka automaatse (1 1 auto) ja mitte (0 0 AUTO).

Väärtused

.flex-ese (Flex: Puudub | Auto | [ ? || ]; }

Vaikeväärtus: 0 1 AUTO.

W3C soovitab individuaalsete omaduste asemel kasutada lühendatud flex vara, kuna Flex taastab õigesti määratlemata komponente tüüpiliseks kasutamiseks.

align-ise.

Align-Self omadus võimaldab teil tühistada vaikimisi joondamine (või määratud väärtuse läbi viisakeeled) üksikute flex elemente. Olemasolevate väärtuste mõistmiseks vaadake Flex konteineri joondamispunktide kirjeldust.

Väärtused

.flex-ese (Align-Self: Auto | Flex-Start | Flex-end | Center | Baseline

Kolmandate ja neljanda paindumise elemendi jaoks tühistatakse joondamise-ise omandi kaudu joondamine.

Moodul Flexbox-Leuauta (Paindlik kast - "Paindlik plokk", ON sel hetkel W3C kandidaadi soovitus) paneb ülesande pakkuma tõhusamat viisi vaba ruumi paigaldamiseks, tasandamiseks ja levitamiseks elementide vahel konteineris, isegi kui nende suurus ei ole teada ja / või dünaamiline (seega sõna "paindlik").

Flex-valvuri peamine idee konteineris, mis on varustatud võimega muuta selle elementide laiuse / kõrgust (ja järjekorda) ruumi parimate ruumide täitmiseks (enamikul juhtudel - toetada igat liiki kuvarit ja ekraanide suurust ). Flex konteiner venib elemendid, et täita vaba ruumi või surub neid, et vältida piiri välja.

Kõige olulisem, Flexbox-Leiaut ei sõltu suunas, erinevalt tavalistest leiantidest (vertikaalselt asuvad plokid ja inline elemendid on horisontaalselt). Kuigi tavaline Leiaut on veebilehtede jaoks suur, puudub see paindlikkus (no canalybur) suurte või keeruliste rakenduste toetamiseks (eriti kui tegemist on ekraani orientatsiooni muutmisega, suuruse muutmise, venitamise, kokkusurumise jne muutmisega).

Kommentaar: Flexbox-Leuaout sobib kõige paremini rakenduse ja väikesemahuliste leuauticsi komposiitide osade jaoks, samas kui grid on laialaste jaoks rohkem kasulikum.

Põhitõed

Sest Flexbox on kogu moodul ja mitte ainult üks vara, see ühendab palju omadusi. Mõned neist tuleks konteinerile rakendada (vanemaelement, nn flex konteiner), samas kui teised omadused kehtivad lastelementide suhtes või flex elemendid.

Kui tavaline Leuaout põhineb ploki ja inline elementide suundadel, põhineb Flex-Liaut "Flex-voolu suundades". Kontrollige seda skeemi spetsifikatsioonist, mis selgitab Flex-Leuaiovi põhiidee.

Enamik elemente levitatakse kas mööda peamine telg (alates põhiline algus. enne lõppu.) või mööda põrketelje (alates ristkäivitus. enne ristlõike.).

  • peatelg - peamine telg mööda, mis painduvad elemendid asuvad. Märkus, see ei pruugi olla horisontaalne, see kõik sõltub flex-suuna varast (vt allpool).
  • põhiline algus. | lõppu. - Flex elemendid paigutatakse mahutisse põhiasendisse põhiasendisse.
  • peamine suurus. - painde elemendi laius või kõrgus sõltuvalt valitud primaarsest väärtusest. Peamine väärtus võib olla kas laiuse või elemendi kõrgus.
  • risttelg. - Põrandateljega risti pendur. Selle suunas sõltub peamise telje suunas.
  • ristkäivitus. | ristlõike. - Flexi read on täis elemente ja asuvad konteineris rist-algusesse asendisse risti asendisse.
  • ristsuurus - Painde elemendi laius või kõrgus sõltuvalt mõõtme suurusest on võrdne selle suurusega. See vara langeb kokku selle laius või kõrgusega sõltuvalt mõõtme suurusest.

Omadused

ekraan: Flex | Inline-Flex;

See kehtib:

Määrab flex konteineri (inline või plokk sõltuvalt valitud väärtusest), ühendab flex konteksti kõigi oma vahetu järeltulijad.

Kuva: Muud väärtused | Flex | Inline-Flex;

Pea meeles:

  • CSS veerud ei tööta Flex Containeriga
  • float, selge ja vertikaalne align ei tööta Flex Elements

flex-suunas.

See kehtib: Vanemlik element Flex-konteiner.

Määrab põhiteade põhitelje, määrates seeläbi konteinerisse paigutatud painde elementide suund.

Flex-suunas: rida | Rida-tagurpidi | Veerg | Kolonn-tagurpidi.
  • rida (vaikimisi): vasakult paremale LTR-ile, paremale RTL-i vasakule;
  • rida-tagurpidi: paremale vasakule LTR-le, vasakult paremale RTL-le;
  • veerg: sarnane reaga, ülevalt alla;
  • kolonn-tagurpidi: sarnane rida-tagurpidi, alt üles.

flex-Wrap.

See kehtib: Vanemlik element Flex-konteiner.

Määrab kindlaks, kas mahuti on üheliin või mitmeliiniline, samuti ristilje suund, millega määratakse kindlaks uued jooned.

Flex-Wrap: nowrap | Wrap | Wrap-tagasi.
  • nowrap (vaikimisi): üheliin / vasakult paremale LTR-ile, paremale vasakule RTL-le;
  • wrap: Multi-line / vasakult paremale LTRile, õigus RTL-i vasakule vasakule;
  • wrap-Reverse: Multi-line / paremale vasakule LTR-le, vasakult paremale RTL-le.

flex-voolu.

See kehtib: Vanemlik element Flex-konteiner.

See vähendab paindlikkuse ja flex-wrap'i omaduste omaduste, mis koos määratlevad pea- ja põiksahe telje. Vaikimisi võtab nüüd rida väärtuse nüüd.

Flex-voolu:<"flex-direction" > || <"flex-wrap" >

See kehtib: Vanemlik element Flex-konteiner.

Määrab joonduse peamise telje suhtes. Aitab levitada ülejäänud vaba ruumi juhul, kui liini elemendid ei ole "venitamine" või venitada, vaid on juba saavutanud oma maksimaalse suurusega. Samuti võimaldab mingil viisil kontrollida elementide joondamist, kui string vabastatakse.

: Flex-start | Flex-end | Keskuse | Space-vahel | Ruumi ümber.
  • flex-start: elemendid nihutatakse joone algusesse;
  • flex-End: elemendid nihutatakse stringi otsaga;
  • keskus: elemendid on joone keskel joondatud;
  • space-vahel: elemendid jagatakse ühtlaselt (esimene element joone alguses, viimane - lõpus);
  • kosmose-ümber: elemendid jaotatakse ühtlaselt võrdse vahemaa omavahel ja stringi piiride vahel.

See kehtib: Vanemlik element Flex-konteiner.

Määrab vaikimisi käitumise flex elemendid on võrreldes ristlõikese praeguse joone. Mõtle selle versiooni Põhjenduse sisu ristlõikele (risti peamine).

: Flex-start | Flex-end | Keskuse | Baasjoone | Venitada.
  • flex-Start: esemete rist-alustava piiri asuv piiripunkt asub rist-alguses;
  • flex-End: ristlõike piiripunktide piiripunkt asub ristlõike asendis;
  • keskus: elemendid on joondatud ristilje keskel;
  • baasjoone: elemendid on nende algtaseme jaoks joondatud;
  • stretch (vaikimisi): elemendid on venitatud, konteineri täitmine (võttes arvesse min-laius / max-laius).

See kehtib: Vanemlik element Flex-konteiner.

Joondab flex konteineri liinide juuresolekul vaba ruumi põikteljel, samal viisil nagu põhjendatud sisu teeb põhiteljel.

Kommentaar: See vara ei tööta ühe-Line Flexboxiga.

: Flex-start | Flex-end | Keskuse | Space-vahel | Space-umbes | Venitada.
  • flex-start: read on joondatud konteineri alguse suhtes;
  • flex-end: read on joondatud konteineri otsa suhtes võrreldes;
  • keskus: read on joondatud konteineri keskel;
  • space-vahel: read jaotatakse ühtlaselt (esimene rida alguses rida, viimane on lõpus);
  • space-ümber: read jaotatakse ühtlaselt võrdse vahemaaga;
  • stretch (vaikimisi): rida on venitatud, vaba ruumi täitmine.

tellimus

See kehtib:

Vaikimisi painad elemendid asuvad algses järjekorras. Siiski võib tellimuse vara kontrollida oma asukoha järjekorda konteineris.

Tellimus:<täisarv\u003e

painduva.

See kehtib: Tütar element / flex element.

Määrab Flex Element võime "kasvada" vajadusel. Võtab indekseeritud väärtuse, mis toimib osana. See määrab, milline osa vaba ruumi konteineris sees võib element hõivata.

Kui kõik elemendid on flex-kasvava vara nagu 1, siis iga järeltulija saab sama suurusega konteinerisse. Kui seate ühe järeltulijateni 2, siis kulub see kaks korda rohkem ruumi kui teised.

Flex-kasvav:<number\u003e (Vaikimisi 0)

flex-kahanema

See kehtib: Tütar element / flex element.

Määrab flex elemendi jaoks võime vajadusel tihendada.

Flex-Shrink: (Vaikimisi 1)

Negatiivseid numbreid ei aktsepteerita.

flex-alus.

See kehtib: Tütar element / flex element.

Määrab elemendi vaikesuuruse enne ruumi jaotumist konteineris.

Flex-alus:<pikkus\u003e. | Automaatne (vaikimisi auto)

painduma

See kehtib: Tütar element / flex element.

See vähendab Flex-kasvama, Flex-Shrink ja Flex-aluse. Teine ja kolmas parameetrid (Flex-Shrink, Flex-alus) on vabatahtlikud. Vaikeväärtus on 0 1 auto.

Flex: Puudub | [<"flex-grow" > <"flex-shrink" >? || <"flex-basis" > ]

align-ise.

See kehtib: Tütar element / flex element.

Võimaldab teil tühistada vaikimisi joondamine või align-esemed, individuaalsete flex elementide jaoks.

Vaadake kirjeldust align-esemeid vara parema arusaama olemasolevate väärtuste.

Align-ise: auto | Flex-start | Flex-end | Keskuse | Baasjoone | Venitada.

Näited

Alustame väga väga lihtsa näitega, mis esineb peaaegu iga päev: joondamine täpselt keskel. Flexboxi kasutamisel pole midagi lihtsamat.

.PART (ekraan: Flex; kõrgus: 300px; / * Või midagi * / ) .Laste (laius: 100px; / * Või midagi * / Kõrgus: 100px; / * Või midagi * / Marginaal: Auto; / * Magic! * /)

See näide põhineb asjaolul, et marginaal flex konteineri määratud automaatse neelab tarbetu ruumi, nii et viiteülesanne seega joonistab element täpselt kesklinnas mõlemal telge.

Nüüd kasutame mõned omadused. Esitage 6 fikseeritud suurusega elementi (ilu jaoks), kuid võime muuta konteineri suurust. Me tahame neid horisontaalselt ühtlaselt jaotada, nii et kui brauseri aken on muudetud, tundus kõik hea (ilma @ Media-Recorder!).

.flex-konteiner ( / * Kõigepealt luua Flex-konteksti * / Ekraan: Flex; / * Nüüd me määratleme voolusuunda ja kas me tahame, et elemendid üle uuele stringile * Pea meeles, et see on sama: * Flex-suunas: rida; * Flex-wrap: wrap; * / Flex-flow: rida mähk; / * Nüüd me määratleme, kuidas ruumi * / : Ruumi ümber; )

Valmis. Kõik muu on registreerimise küsimus. Allpool asub Codepen, mis näitab seda näidet. Kindlasti proovige venitada / pigistada brauseri aken ja vaata, mis juhtub.

Vaadake seda pliiatsi!

Proovime midagi muud. Kujutage ette, et me vajame navigeerimist meie saidi ülaosas paremale servale, kuid me tahame, et see oleks keskmise suurusega ekraanide keskuses joondama ja üheks veergiks. Kõik on piisavalt lihtne.

/ * Suured ekraanid * / .Naveerimine (ekraan: Flex; Flex-Flow: rida mähk; / * Nihutab elemente liini lõpuks peamise telje * / : Flex-end; ) @Media kõik ja (max-laius: 800px) (.Navigation ( / * Keskmise suurusega ekraanide jaoks joondame navigeerimist keskuses, levitades ühtlaselt elementide vaba ruumi * / : Ruumi ümber; ) / * Little ekraanid * / @Media kõik ja (max-laius: 500px) (.Navendamise ( / * Väikeste ekraanide asemel stringi asemel on meil elemendid veerus * / Flex-suund: veerg; )) Vaadake seda pliiatsi!

Proovime midagi paremat ja mängida paindlikkust Flex-elementide! Kuidas on suunatud mobiilseadmed Kolmekella paigutus koos täieliku korgiga ja keldriga? Ja teine \u200b\u200basukoha järjekord.

.wrapper (ekraan: Flex; Flex-Flow: rida mähk;) / * Me täpsustame kõik 100% laiuse elemendid * / .Header, .main, .nav, .Side, .footer (Flex: 1 100%;) / * Sel juhul me toetuda originaal tellimuse orientatsioon * mobiilseadmetele: * 1. Päise * 2. NAV * 3. Main * 4. Peamine * 5. jalus * / / * Keskmise suurusega ekraanid * / @Media kõik ja (min-laius: 600px) ( / * Mõlemad Sagebar asub ühes reas * / .ASide (Flex: 1 Auto;)) / * Suured ekraanid * / @Media kõik ja (min-laius: 800px) ( / * Me muudame kohti elemente.ASide-1 i.Main ja informeerige ka * elemente.Main võtke kaks korda rohkem ruumi kui sidbars. * / .main (Flex: 2 0px;) .ASide-1 (tellimus: 1;) .main (tellimus: 2;) .aside-2 (tellimus: 3;) .footer (tellimus: 4;))

Kui sa ütled lühikese, siis paigutus Flexboxiga annab meile lihtsaid lahendusi pärast keerulisi ülesandeid. Näiteks, kui vajate vertikaalset elementi joondamist või vajutage keldrit ekraani allosas või lihtsalt sisestage mitu plokki ühte rida, nii et nad hõivata kõik vaba ruumi. Sellised ülesanded lahendatakse ilma paindumiseta. Kuid reeglina on need lahendused sarnasemad "kargustega" - CSS-i kasutamiseks mõeldud vastuvõtuga ei ole mõeldud. Arvestades, et Flexboxiga lahendatakse sellised ülesanded täpselt nii, nagu Flex mudel mõtleb.

CSS paindlik kasti paigutusmoodul (CSS-mooduli moodulite jaoks painduvate plokkidega), lühike flexbox, mis on loodud vigade eemaldamiseks mitmesuguste HTML-konstruktsioonide loomisel, sealhulgas kohandatud erinevate laiustega ja kõrguse all ning tehke loogilise ja lihtne paigutus. Ja loogiline lähenemine, reeglina töötab ootamatutes kohtades, kus tulemust ei kontrollita - meie loogika!

Flexbox võimaldab teil elegantselt kontrollida konteineri sees olevate elementide kõige erinevamaid parameetreid: suund, tellimus, laius, kõrgus, joondamine mööda ja kogu, vaba ruumi jaotamine, elementide venitamine ja kokkusurumine.

Põhiteadmised

Flexbox koosneb konteinerist ja selle lapse elemente (elemendid) (paindlikud elemendid).

Flexboxi lisamiseks Html element Piisav CSS-i vara kuvamise määramine: Flex; või ekraan: Inline-Flex; .

1
2

Pärast paindumisomaduste sisselülitamist luuakse konteineri sees kaks telge: pea- ja põiksuunas (risti (⊥), risttelg). Kõik pesastatud elemendid (esimene tase) on üles ehitatud põhitelisse. Vaikimisi on peamine telg horisontaalne ja tal on suund vasakult paremale (→) ja risttelg vastavalt vertikaalsele ja on suunatud ülalt alla (↓).

Peamine ja ristilje saab muuta kohtades, siis elemendid asuvad peal (↓) ja kui nad lõpetavad paigaldamise kõrguseni, liiguvad nad vasakult paremale (→) - see tähendab, et teljed muutuvad lihtsalt kohtades . Samal ajal ei muutu elementide asukoha algus ja lõpus - ainult juhised (telje) Muuda! Sellepärast peate ette kujutama telje konteineri sees. Siiski ei ole vaja mõelda, et seal on mõned "füüsilised" teljed ja nad mõjutavad midagi. Axis on siin ainult konteineri sees olevate elementide liikumise suund. Näiteks kui me märkisime peamise telje keskelementide elementide joondamist ja seejärel muutis selle peamise telje suunda, muutub see ja joondamine: elemendid olid keskel horisontaalselt ja terasest vertikaalselt. . Vt näide.

Flex Boxi teine \u200b\u200boluline omadus on järjestikuse suuna kohalolek. Et mõista, mida me räägime, kujutan ette, et on olemas peamine horisontaalne telg, paljud elemendid ja nad ei "ronida" konteinerisse, nii et nad lähevad teise rea juurde. Need. Konteiner näeb välja selline: konteiner, sees kaks rida, igas reas mitu elementi. Esitatud? Nüüd mäletan, et saame reageerida vertikaalselt mitte ainult elemente, vaid ka rida! Kuidas see kinnisvara näites hästi tööb hästi nähtav. Ja nii tundub see skemaatiliselt:

CSS-i omadusedMis võib mõjutada paigutuse ehitusmudelit: float, selge, vertikaalne joondamine, veerud ei tööta Flex disainis. Ta kasutab teist mudeli paigutuse ehitamiseks ja need CSS-i omadused lihtsalt ignoreeritakse.

CSS Properties Flexbox

Flexbox sisaldab erinevaid CSS-reegleid kogu Flex Design'i juhtimiseks. Mõningaid tuleb rakendada peamisse konteinerile, samas kui teised selle konteineri elementidele.

Konteineri jaoks

Ekraan:

Sisaldab elemendi flex vara. Selle põhjenduse all investeeritud element kuulub: ainult esimese taseme järeltulijad - nad muutuvad konteineri elemendiks.

  • painduma - Element venitatakse kogu laiuseni ja selle kogu ruumi ümbritsevate plokkide seas. Sõudmine toimub alguses ja lõpus ploki.
  • inline-flex - Element on sujuvamad teiste elementidega. Sellisel juhul on selle sisemine osa vormindatud ploki elemendina ja element ise on nagu sisseehitatud.

flex ja Inline-Flex erinevad asjaolust, et erinevalt suhelda ümbritseva elemendiga, nagu ekraan: plokk ja ekraan: Inline-plokk.

Flex-suunas:

Muudab konteineri põhitelje suunda. Katkeste telje muutused vastavalt.

  • rida (vaikimisi) - elementide suund vasakult paremale (→)
  • veerg. - elementide suund ülevalt alla (↓)
  • rida-tagurpidi. - paremal vasakul asuva elementide suund (←)
  • kolonn-tagurpidi. - elementide suund alt üles top ()
Flex-Wrap:

Juhib konteinerile kompenseerimata elementide ülekandmist.

  • nowrap (vaikimisi) - pesastatud elemendid asuvad ühes reas (suunas \u003d rida) või ühes veerus (suunas \u003d veerg), olenemata sellest, kas need paigutatakse konteinerisse või mitte.
  • wrap. - Sisaldab kirjete üleandmist järgmisele reale, kui need ei ole konteinerisse paigutatud. See hõlmab põiktelje elementide liikumist.
  • wrap-tagasi. - Ka see wrap ainult üleandmine ei ole alla, ja üles (vastupidises suunas).
Flex-Flow: Suund Wrap

Ühendab nii Flex-suund ja Flex-Wrap Properties. Neid kasutatakse sageli koos, nii et Flex-voolukoor on loodud selleks, et kirjutada vähem koodi.

flex-voolu aktsepteerib kahe omaduse väärtusi, mis on eraldatud ruumiga. Või saate määrata ühe vara väärtuse.

/ * Ainult flex-suunal * / flex-flow: rida; Flex-flow: rida-tagurpidi; Flex-voolu: kolonn; Flex-flow: kolonn-tagurpidi; / * Ainult Flex-Wrap * / Flex-Flow: nowrap; Flex-flow: wrap; Flex-flow: wrap-tagurpidi; / * Mõlemad nii tähendused: Flex-suund ja Flex-Wrap * / Flex-Flow: rida Nowrap; Flex-flow: veerg wrap; Flex-flow: kolonn-tagurpidi mähkimine; Põhjendage sisu:

Joondab elemendid põhiteljele: kui suund \u003d rida, seejärel horisontaalselt ja kui suund \u003d veerg, siis vertikaalselt.

  • flex-Start (vaikimisi) - Elemendid lähevad algusest peale (lõpus võib olla koht).
  • flex-end. - elemendid on lõppu võrdsustatud (koht jääb alguses)
  • keskus - keskel (koht jääb vasakule ja paremale)
  • ruumi vahel. - äärmuslikke elemente vajutatakse servadele (elementide vaheline koht jagatakse ühtlaselt)
  • ruumi ümber. - Vaba ruum on elementide vahel ühtlaselt jaotunud (äärmuslikke elemente ei vajuta servadele). Konteineri serva ja äärmuslike elementide vaheline ruum on kaks korda väiksem kui rea keskel elementide vaheline ruum.
  • ruumi-ühtlaselt
Align-sisu:

Joondab auastmed, kus asub põiktelje elemendid. Sama mis õigustab sisu ainult vastupidise telje jaoks.

Märkus: töötab, kui on vähemalt 2 rida, st. Kui on ainult 1 rida midagi juhtub.

Need. Kui Flex-suunas: rida, see omadus joondada nähtamatu rida vertikaalselt |. Oluline on märkida, et ploki kõrguse tuleb seadistada jäigalt ja see peaks olema suurem kui seeria kõrgus, muidu ridad ise venitavad konteineri ja nende joondamine kaotab selle tähenduse, sest nende vahel ei ole vaba ruumi. . Aga kui Flex-suunas: veerg, siis read liiguvad horisontaalselt → ja konteineri laius on peaaegu alati suurem kui seeria laius ja ridade joondamine omandab kohe ...

  • venitada (vaikimisi) - rida venitada täites string täielikult
  • flex-algus. - Ridade rühmitatakse konteineri ülaosas (lõpus võib olla koht).
  • flex-end. - Ridade rühmitatakse konteineri põhjas (koht jääb alguses)
  • keskus - read rühmitatakse konteineri keskele (koht jääb servadele)
  • ruumi vahel. - äärmuslikud read pressitakse servade suunas (ridade vaheline koht jagatakse ühtlaselt)
  • ruumi ümber. - Vaba ruum on ridade vahel ühtlaselt jaotunud (äärmuslikud elemendid ei ole servade suunas alla vajutatud). Konteineri serva ja äärmuslike elementide vaheline ruum on kaks korda väiksem kui rea keskel elementide vaheline ruum.
  • ruumi-ühtlaselt - Ka see kosmose-ümber, ainult kaugus äärmuslike elementide kaugusel konteineri servadele on samad elementide vahel.
Align-esemed:

Joondab elemendid rida (nähtamatu joon) põiktelje elemendid. Need. Ridade ise on joondatud sisalduse ja nende ridade elemendid (stringid) align-esemete ja kogu selle põiktelje kaudu. Peamisest teljest ei ole sellist eraldamist, ei ole seeria ja elementide kontseptsioone joondatud põhjendatud sisuga.

  • venitada (vaikimisi) - elemendid Stringi täitmine täielikult
  • flex-algus. - elemente vajutatakse rea algusesse
  • flex-end. - elemendid vajutatakse rea lõpu vastu
  • keskus - elemendid on rida keskel tasandamine
  • algtaseme - elemendid on joondatud algtekstiga

Konteinerielementide jaoks

Flex-kasvav:

Määrab elemendi suureneva teguri konteineri vaba ruumi juuresolekul. Vaikimisi Flex-kasvav: 0 s.t. Ei, elemendid peaksid suurendama ja täitma vaba ruumi konteinerisse.

Vaikimisi Flex-kasvav: 0

  • Kui kõik elemendid näitavad flex-kasvavat: 1, siis nad kõik venitavad võrdselt ja täita kõik vaba ruumi konteineris.
  • Kui üks elemente näitavad flex-kasvavat: 1, siis täidab see kogu vaba ruumi konteineris ja joondamise kaudu põhjendatud sisu töö ei saa töötada: ei ole midagi vaba ruumi ...
  • Kui Flex-Grow kasvab: 1. Kui ühel neist on paindlik kasvav: 2, on see 2 korda rohkem kui keegi teine
  • Kui kõik Flexi plokid Flexi konteineril on Flex-Grow: 3, siis nad on sama suurusega
  • Flex-Grow'iga: 3. Kui üks neist on flex-kasvav: 12, see on 4 korda rohkem kui keegi teine

Kuidas see töötab? Oletame, et mahutil on 500PX laius ja sisaldab kahte elementi, millest igaühel on põhiline laius 100PX. Seetõttu jäävad konteinerisse 300 vaba pikslit. Nüüd, kui määrate Flex-Grow: 2 esimene element; ja teine \u200b\u200bflex-kasvav: 1; Plokid võtavad kogu olemasoleva konteineri laius ja esimese ploki laius on 300px ja teine \u200b\u200b200PX. See on seletatav asjaoluga, et saadaval 300px vaba ruumi konteineris jaotati elementide vahel 2: 1, + 200PX suhe esimese ja + 100px teine.

Märkus: väärtuses saate määrata murdosaNäiteks: 0.5 - Flex-Grow: 0,5

Flex-Shrink:

Määrab elemendi vähendamise tegur. Funktsioon on vastupidine Flex-kasvav ja määrab, kuidas element peab olema kokkusurutud, kui konteineris ei ole vaba ruumi. Need. Vara hakkab töötama, kui kõigi elementide suuruste summa on suurem kui konteineri suurus.

Vaikimisi Flex-Shrink: 1

Oletame, et konteineril on 600px laius ja sisaldab kahte elementi, millest igaühel on 300px laius - flex-alus: 300px; . Need. Kaks elementi täidavad konteineri täielikult. Esimene element näitab Flex-Shrink: 2; ja teine \u200b\u200bflex-kahanemine: 1; . Nüüd vähendades konteineri laius 300px, s.o. Elemendid peavad olema 300px paiknema konteineri sees. Need surutakse 2: 1 suhtega, s.o. Esimene üksus liitub 200PX-iga ja teine \u200b\u200bkuni 100px ja elementide uued mõõtmed on 100PX ja 200PX.

Märkus: väärtuses saate määrata murdosa numbreid, näiteks: 0,5 - Flex-Shrink: 0,5

Flex-alus:

Määrab elemendi põhilaiust - arvutatakse elemendi laius mõjutavate ülejäänud tingimused. Väärtust saab määrata PX, EM, REM,%, VW, VH jne Lõplik laius sõltub flex-kasvava, flex-shrink ja sisu baaslaiusest ja väärtustest ploki sees. Auto abil saab element selle sisu sisu suhtes põhilise laiuse.

Vaikimisi: Auto

Mõnikord on parem paigaldada elemendi laius jäigalt läbi tavalise laiuse vara. Näiteks laius: 50%; See tähendab, et konteineri sees olev element on täpselt 50%, kuid töötavad ka Flex-Grow ja Flex-Shrink Properties. See võib olla vajalik, kui element venitatakse selle sees sisaldusega, mis on kinnitatud flex-baasil. Näide.

flex-alus on "karm", kui reset tõmbe- ja kokkusurumist: Flex-alus: 200PX; Flex-kasvav: 0; Flex-Shrink: 0; . Kõik see saab kirjutada nagu Flex: 0 0 200px; .

Flex: (Kasvage kahanema)

Lühikese salvestamise kolme omadused: Flex-Grow Flex-Shrink Flerk-Based.

Vaikimisi: Flex: 0 1 Auto

Siiski saate määrata ühe ja kaks väärtust:

Flex: Puudub; / * 0 0 Auto * / / * number * / Flex: 2; / * Flex-kasvav (Flex-bass läheb 0-le) * / / * Ei ole number * / Flex: 10em; / * Flex-alus: 10em * / Flex: 30PX; / * Flex-alus: 30PX * / Flex: Auto; / * Flex-alus: Auto * / Flex: sisu; / * Flex-alus: sisu * / Flex: 1 30PX; / * Flex-kasvav ja flex-baas * / Flex: 2 2; / * Flex-Grow ja Flex-Shrink (Flex-bassis 0) * / Flex: 2 2 10%; / * Flex-Grow ja Flex-Shrink ja Flex-Alusel * / Align-Self:

Võimaldab teil muuta align-esemeid vara ainult eraldi elemendi jaoks.

Vaikimisi: Align-esemete konteinerist

  • venitada. - element on venitatud stringi täitmine täielikult
  • flex-algus. - elementi vajutatakse rea algusesse
  • flex-end. - elementi vajutatakse stringi otsa suunas
  • keskus - element on liini keskel tasandatud
  • algtaseme - element on joondatud teksti põhjendusega

Tellimus:

Võimaldab muuta üldises reas elemendi järjekorda (positsiooni, asukohta).

Vaikimisi: tellimus: 0

Vaikimisi on elemendid tellida: 0 ja panna oma välimuse järjekorras HTML-koodi ja rea \u200b\u200bsuunas. Aga kui muudate tellimuse vara väärtust, ehitatakse üksused väärtuste järjekorda: -1 0 1 2 3. Näiteks, kui üks elementidest näitavad järjekorras: 1, siis lähete kõigepealt kõik null ja seejärel element 1-st.

Seega on võimalik, näiteks esimene element lõpuni lõpuni, muutes teiste elementide või HTML-koodi liikumise suunas muutmata.

Märkused

Mis vahe on flex-aluse laiuse vahel?

Allpool olulisi erinevusi flex-aluse ja laiuse / kõrguse vahel:

    flex-baas toimib ainult peamise telje jaoks. See tähendab, et kui Flex-suunas: rida Flex-baas kontrollib laiust (laius) ja kui Flex-suunas: veerg kontrollib kõrgust (kõrgus). .

    flex-alus kehtib ainult paindlike elementide suhtes. Nii et kui te keelate konteineris Flexi, ei mõjuta see vara.

    Absoluutsed elemendid konteineri ei osale Flex Design ... ja seetõttu Flex-bassein ei mõjuta elemente Flex konteineri, kui need on absoluutselt. Nad peavad täpsustama laiuse / kõrguse.

  • Kui kasutate Flexi omadusi 3 väärtust (Flex-Grow / Flex-Flex-Shrink / Flex-Alus), saate ühendada ja kirjutada lühikeseks ning laiuseks kasvada või kahaneb, peate eraldi kirjutama. Näiteks: Flex: 0 0 50% \u003d\u003d laius: 50%; Flex-Shrink: 0; . Mõnikord on see lihtsalt ebamugav.

Võimaluse korral eelistavad veel flex-aluseid. Kasutage laiust ainult siis, kui Flex-alus ei sobi.

Erinevused Flex-alus laius - Bug või Fich?

Flex elemendi sees olev sisu lõikab ja ei saa minna kaugemale selle piiridest. Siiski, kui seadistate laius laiuse või max-laius ja mitte flex-basseini, suudab Flexi konteineri sees olev element minna kaugemale sellest konteinerist (mõnikord vajate seda käitumist). Näide:

Näited Flex Layout

Näidetes kasutab kõikjal rist-brauseri eesliiteid. Ma tegin seda mugava lugemise CSS-i jaoks. Seetõttu vaadake viimaseid näiteid. chrome'i versioonid või Firefox.

# 1 lihtne näide vertikaalse joondamise ja horisontaalsete

Alustame kõige lihtsamast näitest - vertikaalselt ja horisontaalselt samaaegselt ja ploki kõrgusel, isegi kummi kõrgusel.

Tekst keskel

Või nii, ilma plokkideta:

Tekst keskel

# 1.2 eraldamine (lõhe) elementide vahel flex plokk

Et paigutada konteineri elemendid servad ja valige meelevaldselt element, mille järel on pausi, peate kasutama marginaal-vasakut vara: auto või marginaal-paremal: auto.

# 2 adaptiivne menüü Flex

Tehke menüü lehe ülaosas. Lai ekraanil peab see olema õige. Keskmiselt joondatud keskel. Ja väikese elemendi puhul peaks olema uus rida.

# 3 Adaptive 3 veergu

See näide näitab, kui kiiresti ja mugavalt 3 veergu, mis ahenemisel muutuvad 2 ja seejärel 1.

Pange tähele, et seda saab teha ilma meediareeglite kasutamata jätmiseta.

1
2
3
4
5
6

Mine JSFIDDLE.NETisse ja muutke sektsiooni "tulemus" laiust

# 4 adaptiivne plokk flex

Oletame, et peame tühistama 3 plokki, üks suur ja kaks väikest. Samal ajal on vaja, et plokid sobiksid väikesteks ekraanideks. Tegema:

1
2
3

Mine JSFIDDLE.NETisse ja muutke sektsiooni "tulemus" laiust

# 5 Galerii Flexi ja ülemineku kohta

See näide näitab, kui kiiresti saate teha päris silma akordioni painduvate piltidega. Pöörake tähelepanu Flexi üleminekuomandile.

# 6 Flex Flex (vaid näide)

Ülesanne teha paindliku ploki. Nii et teksti algus igas plokis oli samal horisontaalsel liinil. Need. Laiuse laiusega kasvavad plokid kõrgusel. On vaja, et pilt on ülaosas, nupp on alati allkorrusel ja tekst keset algas ühe horisontaalse reaga ...

Selle probleemi lahendamiseks on plokid ise venitatud Flexi poolt ja paigaldatakse maksimaalne võimalik laius. Iga sisemine üksus on ka disainiga paindumine paindliku suunaga: veerg; ja element keset (kus tekst asub) on venitatud Flex-kasvav: 1; Täitmiseks kogu vaba ruumi, tulemus saavutatakse - tekst algas ühe reaga ...

Rohkem näiteid

Brauseri toetus - 98,3%

Loomulikult ei ole täielikku toetust, vaid kõiki kaasaegsed brauserid Toetage Flexboxi kujundeid. Mõnede jaoks peate siiski määrama eesliiteid. Reaalse pildi jaoks vaadake Caniuuse.com ja vaadake, et 96,3% täna kasutatava brauserist töötab ilma prefiksideta ilma prefiksideta, mille eesliited on 98,3%. See on suurepärane näitaja, et paindlikult kasutada Flexboxi.

Et teada saada, millised eesliited on tänapäeval asjakohased (juuni 2019), annan ma näide kõigi paindlikest eeskirjadest vajalikud eesliited:

/ * Konteiner * /. -Mebkit-box-orienteeritud: vertikaalne; -Webkit-box-suund: normaalne; -MS-flex-suund: veerg; flex-suund: veerg; -MS-flex-wrap: mähkis; -Flex-flow: veerg wrap; flex-flow: veerg wrap; -webkit-box-pap: põhjendage; -MS-flex-pap: põhjendage; õigusi sisu: ruumi-flex-line-pakend: Levitada; Align-sisu: kosmose-ümber;) / * elemendid * / .flex-ese (-webkit-box-flex: 1; -MS-flex-positiivne: 1; flex-kasvav: 1; -M-flex- Negatiivne: 2; Flex-Shrink: 2; -MS-Flex-eelistatud suurus: 100px; Flex-alus: 100px; -MS-Flex: 1 2 100px; Flex: 1 2 100px; -MS-Flex-elemendi-Align : Keskus; Align-ise: keskus; -Mebkit-box-ordinaalne grupp: 3; -MS-flex-order: 2; järjekorras: 2;)

See on parem, kui eesliidete omadused lähevad algse vara juurde.
Täna ei ole tänapäeva (Caniude) eesliiteid täna (Caniuuse poolt), kuid üldiselt eesliidetes rohkem.

Chrome. Safari. Firefox. Opera. IE Android iOS.
20- (vana) 3.1+ (vana) 2-21 (vana) 10 (Tweeger) 2.1+ (vana) 3.2+ (vana)
21+ (uus) 6.1+ (uus) 22+ (uus) 12.1+ (uus) 11+ (uus) 4.4+ (uus) 7.1+ (uus)
  • (Uus) - Uus süntaks: kuva: Flex; .
  • (Tweener) - vana mitteametlik süntaks 2011: Display: Flexbox; .
  • (Vana) - vana süntaks 2009: ekraan: kast;

Videot

Noh, ärge unustage video kohta, mõnikord on ka huvitav ja arusaadav. Siin on paar populaarset:

Kasulikud lingid Flexi jaoks

    flexboxfroggy.com - Flexboxi haridusmäng.

    Flexplorer on visuaalne flex-koodi disainer.