Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • Shembuj Flexbox. Çfarë është Flexbox? Përshkrimi i të gjitha vetive të css, parimet bazë, avantazhet dhe disavantazhet

Shembuj Flexbox. Çfarë është Flexbox? Përshkrimi i të gjitha vetive të css, parimet bazë, avantazhet dhe disavantazhet

Vetia align-content specifikon llojin e shtrirjes së linjave brenda një kontejneri flex përgjatë boshtit tërthor nëse ka hapësirë ​​të lirë.

Ajo vlen për: enë përkulëse.

Vlera e paracaktuar: shtrirje.

Flex-start Linjat janë të vendosura në fillim të boshtit tërthor. Çdo rresht tjetër është i barabartë me atë të mëparshëm. Flex-end Rreshtat vendosen duke filluar nga fundi i boshtit kryq. Çdo rresht i mëparshëm është i barabartë me tjetrin. qendër Vijat vendosen në qendër të enës. space-midis Vijat janë të shpërndara në mënyrë të barabartë në enë dhe distanca ndërmjet tyre është e njëjtë. hapësirë-rreth Linjat janë të ndara në mënyrë të barabartë në mënyrë që hapësira ndërmjet dy vijave ngjitur të jetë e njëjtë. Hapësira boshe para rreshtit të parë dhe pas rreshtit të fundit është e barabartë me gjysmën e hapësirës midis dy rreshtave ngjitur. hapësirë ​​në mënyrë të barabartë Rreshtat shpërndahen në mënyrë të barabartë. Hapësira e bardhë para rreshtit të parë dhe pas rreshtit të fundit është e njëjtë me gjerësinë e vijave të tjera. shtrirje Linjat shtrihen në mënyrë të barabartë për të mbushur hapësirën e disponueshme.

Vetia align-content rreshton linjat e një kontejneri flex brenda kontejnerit flex kur ka hapësirë ​​shtesë në boshtin kryq, ngjashëm me mënyrën se si justify-content rreshton artikujt individual brenda boshtit kryesor. Shënim, kjo veti nuk ka asnjë efekt në një kontejner flex me një linjë. Vlerat kanë kuptimet e mëposhtme:

Shënim: Vetëm kontejnerët fleksibël me shumë rreshta kanë ndonjëherë hapësirë ​​të lirë në boshtin kryq për linjat që do të rreshtohen, sepse në një kontejner fleksibël me një linjë, vija e vetme shtrihet automatikisht për të mbushur hapësirën.

Zbatohet për: kontejnerë fleksibël.

Fillestare: shtrirje.

Linjat Flex-start janë të paketuara drejt fillimit të kontejnerit flex. Skaji i nisjes së tërthortë i vijës së parë në enën e përkuljes vendoset në të njëjtën linjë me skajin e nisjes së tërthortë të enës përkulëse dhe çdo rresht pasues vendoset në të njëjtën linjë me vijën e mëparshme. Linjat me fund të përkulur janë të paketuara drejt fundit të kontejnerit flex. Skaji kryq i vijës së fundit vendoset në të njëjtën linjë me skajin kryq të enës përkulëse dhe secila vijë e mëparshme vendoset në të njëjtën linjë me vijën pasuese. qendër Linjat janë të paketuara drejt qendrës së kontejnerit flex. Linjat në kontejnerin fleksibël vendosen në nivel me njëra-tjetrën dhe rreshtohen në qendër të kontejnerit fleks, me sasi të barabarta hapësire ndërmjet skajit të përmbajtjes së nisjes së tërthortë të kontejnerit fleks dhe vijës së parë në kontejnerin fleks, dhe ndërmjet skaji i përmbajtjes kryq i kontejnerit flex dhe vija e fundit në kontejnerin flex. (Nëse hapësira e mbetur e lirë është negative, linjat do të vërshojnë në mënyrë të barabartë në të dy drejtimet.) Hapësira ndërmjet rreshtave shpërndahet në mënyrë të barabartë në kontejnerin flex. Nëse hapësira e lirë e mbetur është negative, kjo vlerë është identike me fillimin e përkuljes. Përndryshe, skaji i fillimit tërthor i vijës së parë në kontejnerin flex vendoset në të njëjtën linjë me skajin e përmbajtjes së nisjes së tërthortë të kontejnerit flex, skaji kryq i vijës së fundit në kontejnerin flex vendoset në të njëjtin nivel me skajin e përkuljes. skaji i përmbajtjes fundore të kontejnerit flex, dhe linjat e mbetura në kontejnerin flex shpërndahen në mënyrë që hapësira ndërmjet çdo dy linjash ngjitur të jetë e njëjtë. hapësirë-rreth Linjat shpërndahen në mënyrë të barabartë në kontejnerin flex, me hapësira gjysmë të përmasave në të dy skajet. Nëse hapësira e lirë e mbetur është negative, kjo vlerë është identike me qendrën. Përndryshe, linjat në kontejnerin flex shpërndahen në atë mënyrë që hapësira ndërmjet çdo dy linjash ngjitur të jetë e njëjtë, dhe hapësira ndërmjet rreshtave të parë/të fundit dhe skajeve të kontejnerit fleksibël të jetë sa gjysma e hapësirës ndërmjet vijave të përkulura. hapësirë ​​në mënyrë të barabartë Linjat shpërndahen në mënyrë të barabartë në kontejnerin flex. Nëse hapësira e lirë e mbetur është negative, kjo vlerë është identike me qendrën. Përndryshe, linjat në kontejnerin flex shpërndahen në atë mënyrë që hapësira ndërmjet çdo linje fleksi të jetë e njëjtë. shtrirje Linjat shtrihen për të zënë hapësirën e mbetur. Nëse hapësira e lirë e mbetur është negative, kjo vlerë është identike me fillimin e përkuljes. Përndryshe, hapësira e lirë ndahet në mënyrë të barabartë midis të gjitha rreshtave, duke rritur madhësinë e tyre kryq.

Flexbox CSS (Moduli fleksibël i paraqitjes së kutisë)- Moduli fleksibël i paraqitjes së kontejnerëve - është një mënyrë e rregullimit të elementeve, bazuar në idenë e një boshti.

Flexbox përbëhet nga enë fleksibël Dhe artikuj fleksibël. Elementet fleksibël mund të organizohen në një rresht ose kolonë, dhe hapësira e mbetur e lirë shpërndahet midis tyre në mënyra të ndryshme.

Moduli flexbox ju lejon të zgjidhni detyrat e mëposhtme:

  • Rregulloni elementet në një nga katër drejtimet: nga e majta në të djathtë, nga e djathta në të majtë, nga lart poshtë ose nga poshtë lart.
  • Anuloni rendin e shfaqjes së elementeve.
  • Përmasat automatike të elementeve në mënyrë që të përshtaten në hapësirën e disponueshme.
  • Zgjidheni problemin me qendërzim horizontal dhe vertikal.
  • Lëvizni sendet brenda një kontejneri pa e tejmbushur atë.
  • Krijoni kolona me të njëjtën lartësi.
  • Krijo shtypur në fund të faqes.

Flexbox zgjidh probleme specifike - duke krijuar paraqitje njëdimensionale, për shembull, një shirit navigimi, pasi elementët fleksibël mund të vendosen vetëm përgjatë njërit prej akseve.

Ju mund të lexoni një listë të problemeve aktuale të modulit dhe zgjidhjeve të ndër-shfletuesve për to në artikullin nga Philip Walton.

Çfarë është flexbox

Mbështetja e shfletuesit

IE: 11.0, 10.0 -ms-
Firefox: 28.0, 18.0 -moz-
Krom: 29.0, 21.0 -kit në internet-
Safari: 6.1 -kit në internet-
Opera: 12.1 -kit në internet-
iOS Safari: 7.0 -kit në internet-
Opera Mini: 8
Shfletuesi Android: 4.4, 4.1 -kit në internet-
Chrome për Android: 44

1. Konceptet bazë

Oriz. 1. Modeli Flexbox

Një grup specifik termash përdoret për të përshkruar një modul Flexbox. Vlera e rrjedhës së përkuljes dhe mënyra e regjistrimit përcaktojnë korrespondencën e këtyre termave me drejtimet fizike: lart / djathtas / poshtë / majtas, boshtet: vertikale / horizontale dhe dimensionet: gjerësia / lartësia.

Boshti kryesor- boshti përgjatë të cilit janë hedhur elementët fleksibël. Ai shtrihet në dimensionin kryesor.

Fillimi kryesor dhe fundi kryesor— vijat që përcaktojnë anët e fillimit dhe të fundit të kontejnerit fleks, në lidhje me të cilat janë vendosur elementët fleksibël (duke filluar nga fillimi kryesor drejt fundit kryesor).

Madhësia kryesore) - gjerësia ose lartësia e kontejnerit flex ose artikujve flex, në varësi se cili prej tyre është në dimensionin kryesor, përcakton madhësinë kryesore të kontejnerit flex ose artikullit flex.

Aks kryq- boshti pingul me boshtin kryesor. Ai shtrihet në dimensionin tërthor.

Fillimi kryq dhe fundi kryq- linjat që përcaktojnë anët e fillimit dhe mbarimit të boshtit tërthor, në lidhje me të cilat janë hedhur elementët fleksibël.

Madhësia e kryqit— gjerësia ose lartësia e një kontejneri të përkulur ose sendeve fleksi, cilado qoftë në dimensionin kryq, është dimensioni i tyre kryq.


Oriz. 2. Mënyra e rreshtit dhe kolonës

2. Enë Flex

Një kontejner Flex vendos një kontekst të ri formatimi fleksibël për përmbajtjen e tij. Një kontejner flex nuk është një kontejner bllok, kështu që vetitë CSS si float , clear , vertikal-align nuk funksionojnë për elementët fëmijë. Gjithashtu, kontejneri flex nuk ndikohet nga vetitë kolonë-* që krijojnë kolona në tekst dhe pseudoelementet::first-line dhe::first-letter .

Modeli i shënjimit flexbox shoqërohet me një vlerë specifike të veçorisë së shfaqjes CSS të elementit prind HTML që përmban blloqe fëmijë brenda tij. Për të kontrolluar elementët duke përdorur këtë model, duhet të vendosni vetitë e ekranit si më poshtë:

Flex-container ( /*gjeneron një kontejner flex të nivelit bllok*/ ekran: -webkit-flex; display: flex; ) .flex-container ( /*gjeneron një kontejner flex të nivelit të linjës*/ ekran: -webkit-inline- flex; ekran: inline-flex;)

Pas vendosjes së këtyre vlerave të vetive, çdo element fëmijë bëhet automatikisht një element fleksibël, i rreshtuar në një rresht (përgjatë boshtit kryesor). Në këtë rast, elementët bllok dhe inline fëmijë sillen njësoj, d.m.th. Gjerësia e blloqeve është e barabartë me gjerësinë e përmbajtjes së tyre, duke marrë parasysh kufijtë e brendshëm dhe kufijtë e elementit.


Oriz. 3. Përafrimi i elementeve në modelin flexbox

Nëse blloku prind përmban tekst ose imazhe pa mbështjellës, ato bëhen artikuj fleksibël anonimë. Teksti rreshtohet në skajin e sipërm të bllokut të kontejnerit dhe lartësia e figurës bëhet e barabartë me lartësinë e bllokut, d.m.th. është deformuar.

3. Elementet fleksibël

Artikujt Flex janë blloqe që përfaqësojnë përmbajtjen e një kontejneri të përkulur në një rrjedhë. Kontejneri Flex krijon një kontekst të ri formatimi për përmbajtjen e tij, i cili shkakton veçoritë e mëposhtme:

  • Për artikujt fleksibël, vlera e vetive të tyre të shfaqur është e bllokuar. Vlera e shfaqjes: inline-block; dhe shfaq: tabelë-qelizë; vlerësuar në ekran: bllok; .
  • Hapësira e bardhë midis artikujve zhduket: ai nuk bëhet artikulli i tij fleksibël, edhe nëse teksti ndërmjet artikujve është i mbështjellë me një artikull fleksibël anonim. Përmbajtja e një artikulli flex anonim nuk mund të stilohet, por do të trashëgojë stile (të tilla si opsionet e shkronjave) nga kontejneri flex.
  • Një element fleksibël i pozicionuar absolutisht nuk merr pjesë në paraqitjen përkulëse.
  • Kufijtë e elementeve ngjitur fleksibël nuk shemben.
  • Diferenca e përqindjes dhe vlerat e mbushjes llogariten nga madhësia e brendshme e bllokut që i përmban ato.
  • diferencë: auto; zgjerohet, duke thithur hapësirë ​​shtesë në dimensionin përkatës. Ato mund të përdoren për të lidhur ose shtyrë sendet ngjitur fleksibël.
  • Madhësia minimale automatike e paracaktuar e artikujve fleksibël është madhësia minimale e përmbajtjes së saj, d.m.th. Min-width: auto; . Për kontejnerët e lëvizshëm, madhësia minimale automatike është zakonisht zero.

4. Rendi dhe orientimi i shfaqjes së artikullit Flex

Përmbajtja e një kontejneri fleksibël mund të vendoset në çdo drejtim dhe në çdo mënyrë (rirregullimi i artikujve fleksibël brenda kontejnerit ndikon vetëm në paraqitjen vizuale).

4.1. Drejtimi i boshtit kryesor: drejtimi përkul

Prona i referohet kontejnerit flex. Kontrollon drejtimin e boshtit kryesor përgjatë të cilit vendosen artikujt e përkulur, në përputhje me modalitetin aktual të shkrimit. E pa trashëguar.

përkul-drejtimi
Vlerat:
rresht Vlera e paracaktuar është nga e majta në të djathtë (në rtl, nga e djathta në të majtë). Elementet fleksibël janë hedhur në një rresht. Fillimi (fillimi kryesor) dhe fundi (kryesor-fundi) i drejtimit të boshtit kryesor korrespondojnë me fillimin (inline-start) dhe fundin (inline-fund) të boshtit të linjës (aksi inline).
rresht-mbrapsht Drejtimi është nga e djathta në të majtë (në rtl nga e majta në të djathtë). Elementet fleksibël vendosen në një vijë në lidhje me skajin e djathtë të enës (në rtl - majtas).
kolonë Drejtimi nga lart poshtë. Elementet fleksibël vendosen në një kolonë.
kolonë-mbrapsht Një kolonë me elementë në rend të kundërt, nga poshtë lart.
fillestare
trashëgojnë

Oriz. 4. Vetia me drejtim të përkulur për gjuhët nga e majta në të djathtë

Sintaksë

Flex-container (ekrani: -webkit-flex; -webkit-flex-direction: row-back; display: flex; flex-direction: row-reverse; )

4.2. Menaxhimi i kontejnerit fleksibël me shumë rreshta: flex-mbështjellës

Vetia përcakton nëse kontejneri flex do të jetë me një linjë ose me shumë rreshta, dhe gjithashtu cakton drejtimin e boshtit kryq, i cili përcakton drejtimin në të cilin do të vendosen linjat e reja të kontejnerit fleks.

Si parazgjedhje, artikujt fleksibël vendosen në një rresht, përgjatë boshtit kryesor. Nëse vërshojnë, ato do të shtrihen përtej kutisë kufizuese të enës fleks. Prona nuk është e trashëguar.


Oriz. 5. Kontroll me shumë rreshta duke përdorur veçorinë flex-wrap për gjuhët LTR

Sintaksë

Flex-container ( ekran: -webkit-flex; -webkit-flex-wrap: wrap; display: flex; flex-wrap: wrap; )

4.3. Një përmbledhje e shkurtër e drejtimit dhe shumë-linjave: Flex-flow

Vetia ju lejon të përcaktoni drejtimet e akseve kryesore dhe tërthore, si dhe aftësinë për të lëvizur elementët fleksibël, nëse është e nevojshme, në disa linja. Ky është një stenografi për vetitë e drejtimit të përkuljes dhe të përkuljes. Vlera e parazgjedhur flex-flow: row nowrap; . prona nuk është e trashëguar.

Sintaksë

Flex-container ( shfaqja: -webkit-flex; -webkit-flex-flow: mbështjellja e rreshtit; shfaqja: flex; rrjedha e përkulur: mbështjellja e rreshtit; )

4.4. Shfaqja e rendit të artikujve fleksibël: rendit

Vetia përcakton rendin në të cilin artikujt flex shfaqen dhe rregullohen brenda një kontejneri flex. Zbatohet për artikujt flex. Prona nuk është e trashëguar.

Fillimisht të gjithë artikujt flex kanë renditje: 0; . Kur specifikoni një vlerë prej -1 për një element, ai zhvendoset në fillim të vijës kohore dhe një vlerë prej 1 zhvendoset në fund. Nëse disa artikuj fleksibël kanë të njëjtën vlerë porosie, ato do të jepen sipas rendit origjinal.

Sintaksë

Flex-container ( shfaqja: -webkit-flex; shfaqja: flex; )
Oriz. 6. Afishoni rendin e artikujve fleksibël

5. Fleksibiliteti i elementeve fleksibël

Aspekti përcaktues i një paraqitjeje fleksibël është aftësia për të "përkulur" artikujt e përkulur, duke ndryshuar gjerësinë/lartësinë e tyre (në varësi të madhësisë në boshtin kryesor) për të mbushur hapësirën e disponueshme në dimensionin kryesor. Kjo bëhet duke përdorur veçorinë flex. Një enë përkulëse shpërndan hapësirë ​​të lirë midis fëmijëve të saj (proporcionale me raportin e tyre të rritjes së përkuljes) për të mbushur kontejnerin, ose i zvogëlon ato (proporcionale me raportin e tyre të përkuljes) për të parandaluar tejmbushjen.

Një element fleksibël do të jetë plotësisht "jo fleksibël" nëse vlerat e tij të rritjes së përkuljes dhe tkurrjes janë zero, dhe "fleksibël" përndryshe.

5.1. Vendosja e dimensioneve fleksibël me një veti: flex

Vetia është stenografi për vetitë flex-grow, flex-shrink dhe flex-basic. Vlera e parazgjedhur: flex: 0 1 auto; . Ju mund të specifikoni një ose të tre vlerat e pronës. Prona nuk është e trashëguar.

Sintaksë

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

5.2. Faktori i rritjes: flex-grow

Vetia përcakton shkallën e rritjes së një elementi të përkulur në krahasim me elementët e tjerë fleksibël në kontejnerin flex kur shpërndahet hapësira pozitive e lirë. Nëse shuma e vlerave flex-grow të artikujve flex në një rresht është më pak se 1, ato zënë më pak se 100% të hapësirës së lirë. Prona nuk është e trashëguar.


Oriz. 7. Menaxho hapësirën e shiritit të navigimit me Flex-Grow

Sintaksë

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

5.3. Raporti i ngjeshjes: përkul-tkurrje

Vetia specifikon raportin e ngjeshjes së një artikulli flex në lidhje me artikujt e tjerë flex kur shpërndahet hapësira e lirë negative. Shumëzuar me madhësinë e bazës flex. Hapësira negative ndahet në proporcion me sa mund të tkurret artikulli, kështu që, për shembull, një artikull i vogël fleksibël nuk do të tkurret në zero derisa një artikull më i madh fleksibël të tkurret dukshëm. Prona nuk është e trashëguar.


Oriz. 8. Ngushtimi i artikujve fleksibël në një rresht

Sintaksë

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

5.4. Madhësia bazë: flex-bazë

Vetia cakton madhësinë bazë fillestare të një artikulli flex përpara se të ndajë hapësirën e lirë sipas faktorëve të përkuljes. Për të gjitha vlerat, përveç auto dhe përmbajtjes, madhësia bazë e përkuljes përcaktohet e njëjtë me gjerësinë në mënyrat horizontale të shkrimit. Vlerat e përqindjes përcaktohen në lidhje me madhësinë e enës flex, dhe nëse nuk specifikohet madhësia, vlera e përdorur për flex-bazë është dimensionet e përmbajtjes së saj. E pa trashëguar.

Sintaksë

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

6. Rreshtimi

6.1. Rreshtimi i boshtit kryesor: justifiko-përmbajtje

Vetia rreshton artikujt e përkulur përgjatë boshtit kryesor të kontejnerit të përkulur, duke shpërndarë hapësirën e lirë të pazënë nga artikujt fleksibël. Kur një artikull konvertohet në një kontejner flex, artikujt flex grupohen së bashku si parazgjedhje (përveç nëse kanë kufij të caktuar). Boshllëqet shtohen pas llogaritjes së vlerave të marzhit dhe të rritjes së përkuljes. Nëse ndonjë element ka një rritje ose diferencë jo-zero: auto; , prona nuk do te kete efekt. Prona nuk është e trashëguar.

Vlerat:
përkul-start Vlera e paracaktuar. Elementet Flex vendosen në një drejtim duke filluar nga vija e fillimit të enës flex.
përkul-fund Artikujt fleksibël vendosen në drejtim nga vija fundore e enës flex.
qendër Artikujt e përkulur janë rreshtuar në qendër të kontejnerit të përkulur.
hapësirë-ndërmjet Elementet Flex shpërndahen në mënyrë të barabartë përgjatë vijës. Artikulli i parë fleksibël vendoset në të njëjtin nivel me skajin e vijës së fillimit, artikulli i fundit fleksibël vendoset në të njëjtën linjë me skajin e vijës fundore dhe pjesët e mbetura fleksibël në linjë vendosen në mënyrë që distanca midis çdo dy artikujsh ngjitur të jetë e njëjta. Nëse hapësira e lirë e mbetur është negative ose ka vetëm një artikull flex për rresht, kjo vlerë është identike me parametrin flex-start.
hapësirë-rreth Artikujt fleksibël në linjë shpërndahen në mënyrë që distanca midis çdo dy artikujsh fleksibël ngjitur të jetë e njëjtë dhe distanca midis artikujve fleksibël të parë/të fundit dhe skajeve të kontejnerit fleksibël është gjysma e distancës midis artikujve fleksibël.
fillestare Vendos vlerën e pronës në vlerën e paracaktuar.
trashëgojnë Trashëgon vlerën e pronës nga elementi mëmë.

Oriz. 9. Përafrimi i elementeve dhe shpërndarja e hapësirës së lirë duke përdorur veçorinë justify-content

Sintaksë

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

6.2. Shtrirja e boshteve tërthore: rreshtoni artikujt dhe rreshtoni vetë

Artikujt e përkulur mund të rreshtohen përgjatë boshtit tërthor të rreshtit aktual të kontejnerit të përkulur. align-items vendos shtrirjen për të gjithë artikujt e kontejnerëve flex, duke përfshirë artikujt anonimë flex. align-self ju lejon të anashkaloni këtë shtrirje për artikujt individualë të përkulur. Nëse ndonjë nga kufijtë e kryqëzuar të elementit flex vendoset në auto, vetë-linja nuk ka efekt.

6.2.1. Rreshtoni-artikujt

Vetia rreshton elementet e përkuljes, duke përfshirë elementët anonimë të përkuljes, përgjatë boshtit tërthor. E pa trashëguar.

Vlerat:
përkul-start
përkul-fund
qendër
bazë Vijat bazë të të gjithë artikujve fleksibël të përfshirë në shtrirje janë të njëjta.
shtrirje
fillestare Vendos vlerën e pronës në vlerën e paracaktuar.
trashëgojnë Trashëgon vlerën e pronës nga elementi mëmë.
Oriz. 10. Rreshtimi i elementeve në një enë vertikalisht

Sintaksë

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

6.2.2. Align-vetë

Vetia është përgjegjëse për përafrimin e një elementi të vetëm përkulës në lartësinë e kontejnerit të përkulur. Anulon shtrirjen e specifikuar nga align-items . E pa trashëguar.

Vlerat:
auto Vlera e paracaktuar. Një element flex përdor shtrirjen e specifikuar në veçorinë align-item të kontejnerit flex.
përkul-start Skaji i sipërm i elementit flex vendoset ngjitur me vijën e përkuljes (ose në një distancë, duke marrë parasysh kufijtë dhe kufijtë e specifikuar të elementit) duke kaluar nëpër fillim të boshtit kryq.
përkul-fund Skaji i poshtëm i elementit fleksibël vendoset ngjitur me vijën e përkuljes (ose në një distancë, duke marrë parasysh kufijtë dhe kufijtë e specifikuar të elementit) duke kaluar nëpër fund të boshtit kryq.
qendër Kufiri i një elementi fleksibël është i përqendruar përgjatë boshtit kryq brenda vijës së përkuljes.
bazë Elementi flex është në linjë me vijën bazë.
shtrirje Nëse madhësia e tërthortë e një artikulli flex është automatike dhe asnjë nga vlerat e tij ndër-margjinale nuk është automatike, artikulli shtrihet. Vlera e paracaktuar.
fillestare Vendos vlerën e pronës në vlerën e paracaktuar.
trashëgojnë Trashëgon vlerën e pronës nga elementi mëmë.

Oriz. 11. Përafrimi i artikujve individualë fleksibël

Sintaksë

Flex-container ( display: -webkit-flex; display: flex; ) .flex-item ( -webkit-align-self: qendër; align-self: në qendër; )

6.3. Përafrimi i linjave të një kontejneri flex: align-content

Vetia rreshton rreshtat në një kontejner flex kur ka hapësirë ​​shtesë në boshtin kryq, ngjashëm me justifikimin e artikujve individualë në boshtin kryesor duke përdorur veçorinë justify-content. Prona nuk ndikon në një enë fleksibël me një linjë. E pa trashëguar.

Vlerat:
përkul-start Rreshtat janë grumbulluar drejt fillimit të enës flex. Skaji i rreshtit të parë vendoset afër skajit të enës flex, çdo rresht pasues vendoset afër vijës së mëparshme.
përkul-fund Rreshtat janë grumbulluar drejt fundit të enës flex. Skaji i rreshtit të fundit vendoset afër buzës së enës flex, çdo rresht i mëparshëm vendoset afër vijës tjetër.
qendër Rreshtat janë grumbulluar drejt qendrës së enës flex. Rreshtat janë afër njëra-tjetrës dhe në linjë me qendrën e kontejnerit flex, me distancë të barabartë midis skajit fillestar të përmbajtjes së enës flex dhe rreshtit të parë, dhe midis skajit fundor të përmbajtjes së enës flex dhe rreshtit të fundit.
hapësirë-ndërmjet Rreshtat shpërndahen në mënyrë të barabartë në enën flex. Nëse hapësira e lirë e mbetur është negative ose ka vetëm një linjë fleksibile në kontejnerin flex, kjo vlerë është identike me flex-start . Përndryshe, buza e rreshtit të parë vendoset afër skajit fillestar të përmbajtjes së kontejnerit fleks, dhe buza e rreshtit të fundit vendoset afër skajit fundor të përmbajtjes së kontejnerit fleksi. Linjat e mbetura shpërndahen në mënyrë që distanca midis dy linjave ngjitur të jetë e njëjtë.
hapësirë-rreth Linjat janë të ndara në mënyrë të barabartë në enën flex me gjysmë hapësirë ​​në të dy skajet. Nëse hapësira e lirë e mbetur është negative, kjo vlerë është identike me qendrën qendrore. Përndryshe, linjat shpërndahen në mënyrë që distanca midis çdo dy linjash ngjitur të jetë e njëjtë, dhe distanca midis rreshtave të parë/të fundit dhe skajeve të përmbajtjes së kontejnerit flex është gjysma e distancës midis rreshtave.
shtrirje Vlera e paracaktuar. Rreshtat e artikujve fleksibël shtrihen në mënyrë të barabartë për të mbushur të gjithë hapësirën e disponueshme. Nëse hapësira e lirë e mbetur është negative, kjo vlerë është identike me flex-start . Përndryshe, hapësira e lirë do të ndahet në mënyrë të barabartë midis të gjitha rreshtave, duke rritur madhësinë e tyre anësore.
fillestare Vendos vlerën e pronës në vlerën e paracaktuar.
trashëgojnë Trashëgon vlerën e pronës nga elementi mëmë.
Oriz. 12. Rreshtimi me shumë rreshta i elementeve flex

Sintaksë

Flex-container ( ekran: -webkit-flex; -webkit-flex-flow: mbështjellja e rreshtit; -webkit-align-content: flex-end; ekrani: flex; flex-flow: mbështjellja e rreshtit; align-content: flex-end ; lartësia: 100 px;)

Asgjë nuk qëndron ende, teknologjitë dhe standardet po zhvillohen, teknikat dhe metodat e reja për paraqitjen e faqes në internet po shfaqen, për shembull, faqosja me elemente tabelare, të cilat nuk i kemi marrë parasysh për arsye objektive, është zëvendësuar me paraqitjen me elemente lundruese.

Shumë redaktues të kodit kanë një shtojcë të përshtatshme të shënimit të shpejtë të integruar ose të disponueshëm për shkarkim si parazgjedhje, Emmet, i cili ju lejon të bëni shënimin bazë të këtij shembulli si më poshtë: seksion>div*3>lorem+ Skeda (vlera lorem gjeneron tekstin që shfaqet në imazhin më poshtë).

Ju lutemi vini re se pa ndonjë përpjekje të veçantë, ne kemi marrë që kolonat e paraqitjes sonë të jenë në të njëjtën lartësi pavarësisht nga përmbajtja e tyre, dhe kjo është e mrekullueshme. Elementet

nuk janë elementë fleksibël si parazgjedhje dhe ndodhen në rrjedhë e treta element

si elementet e rregullt të bllokut. Nëse ka nevojë për këtë, atëherë për t'i bërë ato elemente fleksibël, siç mund ta merrni me mend, duhet të vendosni prindin e tyre që të jetë një enë fleksibël bllok (flex) ose inline (inline-flex), por më shumë për këtë në vijim shembull.

Rezultati i shembullit tonë:

Enë e përkulur në linjë

Për analogji me elementët e bllokut, kontejnerët fleksibël mund të jenë në linjë. Le të shohim ndryshimin midis kontejnerëve fleksibël në linjë dhe atyre bllok. Në shembullin e mëparshëm, ne shikuam përdorimin e një kontejneri në nivel blloku, si një element i rregullt në nivel blloku, ai zë të gjithë gjerësinë e ekranit dhe sillet si një element i rregullt në nivel blloku. Për sa i përket kontejnerëve flex inline, ato bëhen elemente të rregullta inline, duke ruajtur fleksibilitetin e elementeve.

Në shembullin tjetër do të shikojmë këtë ndryshim, pasi shembulli i mëparshëm nuk do të ishte tregues, për arsye se elementëve të fleksit të fëmijës nuk iu dha një madhësi në mënyrë eksplicite, dhe si rezultat, kontejneri ynë, pavarësisht nëse ishte në linjë apo bllok, do të sillej njësoj dhe do të merrte të gjithë gjerësinë e ekranit.

Dallimi midis kontejnerëve me fleksibël dhe kontejnerëve fleksibël.

Në këtë shembull kemi vendosur dy shkronja të vogla dhe dy enë bllok fleksi, brenda tyre vendosëm pesë elementet

, të cilat automatikisht u bënë elemente flex. Për më tepër, për ta kemi specifikuar një gjerësi dhe lartësi të barabartë me 50 piksele.

Për të gjeneruar shpejt një plan urbanistik të ngjashëm duke përdorur Emmet shkruani sa vijon në redaktues: div.inline-flex*2>div*5 + Tab , dhe e njëjta gjë vetëm me një klasë tjetër div.flex*2>div*5 + Tab .

Duke hedhur një vështrim në rezultatin e shembullit tonë, ndryshimi midis kontejnerëve fleksibël të linjës dhe bllokut tani duhet të jetë i dukshëm për ju. Një kontejner inline sillet si një element inline dhe zë gjerësinë e kërkuar vetëm nga elementët e tij të përkuljes së fëmijës, ndërsa një kontejnerë fleksibël bllok, pavarësisht nga madhësia e elementeve të tij të përkulur, zë të gjithë gjerësinë e ekranit.

Rezultati i shembullit tonë:

Oriz. 205 Një shembull i ndryshimit midis kontejnerëve me fleksibël dhe kontejnerëve fleksibël.

Drejtimi? Cili drejtim?

Drejtimi i elementeve fleksibël formohet në bazë të pozicionit të dy akseve: boshti kryesor enë fleksi dhe e saj boshti tërthor, e cila gjendet gjithmonë pingul me kryesoren. Boshti kryesor në drejtimin ltr (atributi global HTML dir , ose drejtimi i vetive CSS me vlerën ltr ) ndodhet nga e majta në të djathtë dhe boshti tërthor është nga lart poshtë (kjo është vlera e paracaktuar), për vlerën rtl ajo shfaqet në një pasqyrë në përputhje me rrethanat.

Në këtë artikull, ne do të shohim 5 teknika që zgjidhin problemet kryesore të paraqitjes së CSS. Ne kemi përfshirë edhe disa shembuj praktikë nga projekte reale që tregojnë qartë se si mund të përdoren këto teknika.

Krijimi i kolonave me të njëjtën lartësi

Mund të duket mjaft e thjeshtë në fillim, por kjo detyrë mund të jetë e bezdisshme ndonjëherë. Përdorimi i lartësisë min nuk do të funksionojë sepse sapo të shfaqet disa përmbajtje, madhësia e kolonave do të fillojë të ndryshojë menjëherë.

Rregullimi i këtij problemi me flexbox gjithashtu nuk është një zgjidhje pasi kolonat e krijuara me flexbox CSS fillimisht do të jenë të barabarta në gjatësi. Thjesht duhet të prezantojmë një model "fleksibël" dhe më pas të sigurohemi që vetitë flex-direction dhe align-item janë vendosur saktë.

...
...
...
.container ( display: flex; /* Inicializoni modelin flex */ /* Këto janë vlerat e paracaktuara, por ju ende mund t'i ndryshoni ato */ flex-direction: row; /* Artikujt brenda kontejnerit do të pozicionohen horizontalisht */ align -artikuj: shtrirje; /* Elementet brenda kontejnerit do të shtrihen në të gjithë lartësinë e tyre */ )

Elementet e riorganizimit

Njëherë e një kohë në të kaluarën, ndryshimi dinamik i renditjes së elementeve të caktuara ishte një detyrë që vetëm JavaScript mund ta bënte. Por me ardhjen e flexbox, kjo vështirësi nuk lind më, pasi zgjidhja qëndron në vetëm një pronë CSS.

Vetia e porosisë, e cila lejon përdorimin e paraqitjes flexbox, flet vetë. Na lejon të ndryshojmë çdo numër elementësh "fleksibël" dhe sekuencën e tyre. Parametri i vetëm i kësaj vetie është një numër i plotë që përcakton pozicionin e këtij elementi; sa më i madh të jetë numri, aq më i lartë është prioriteti i këtij elementi.

...
...
...
.container( shfaqja: flex; ) /* Prioriteti zbritës i numrit */ .blu( renditja: 3; ) . e kuqe( renditja: 2; ) . e gjelbër( renditja: 1; )

Prona e porosisë ka shumë përdorime. Nëse dëshironi të shihni disa prej tyre, mund t'i hidhni një sy kësaj, ku ne përdorim këtë teknikë për të krijuar një seksion komentesh reaguese.


Përqendrimi horizontal dhe vertikal

Rreshtimi në CSS është ende një problem mjaft i madh. Edhe nëse i drejtoheni një motori kërkimi, ai do të kthejë një mori zgjidhjesh, shumica e të cilave do të sugjerojnë përdorimin e tabelave dhe transformimeve, gjë që nuk është plotësisht e përshtatshme nëse flasim për paraqitjen adaptive.

Një zgjidhje e thjeshtë do të ishte faqosja e fleksibël, me të cilën elementët thjesht mund të zhvendosen përgjatë planit koordinativ, duke e përafruar atë sipas dëshirës.

...
.container( shfaqja: përkul; /* E përqendruar rreth boshtit kryesor */ justify-content: qendër; /* e përqendruar rreth boshtit të vogël */ align-items: qendër; )

Për ta parë këtë zgjidhje në veprim dhe për të mësuar më shumë rreth saj, mund të shkoni te , e cila është në të njëjtën temë.


Krijimi i rrjeteve plotësisht të përgjegjshme

Shumë webmaster mbështeten në biblioteka dhe korniza të ndryshme CSS për të krijuar rrjete të përgjegjshme. Mjeti më i zakonshëm në këtë fushë është Bootstrap. Megjithatë, ai nuk është i vetmi në llojin e tij. Qindra asistentë të ngjashëm janë zhvilluar tashmë. Të gjitha funksionojnë relativisht mirë dhe mburren me një gamë mbresëlënëse opsionesh, por ata kurrë nuk do të shpëtojnë nga një problem - rëndimi. Prandaj, nëse jeni një person që ju pëlqen të bëni gjithçka vetë, ose thjesht nuk dëshironi të instaloni një kornizë të tërë për hir të një rrjeti, atëherë faqosja e flexbox do t'ju ndihmojë!

Një rresht në një rrjet flexbox është vetëm një enë. Kolonat horizontale brenda saj mund të jenë çdo numër elementesh, madhësia e të cilave vendoset duke përdorur flex . Ky model përshtatet me çdo madhësi ekrani, kështu që rezultati përfundimtar duhet të duket i mirë në shumicën e pajisjeve. Megjithatë, nëse vendosim që nuk ka hapësirë ​​të mjaftueshme horizontale në ekran, atëherë faqosja thjesht mund të shndërrohet në vertikale me një pyetje mediatike.

...
...
...
.container( display: flex; ) /* Klasat për secilën kolonë me madhësi. */ .col-1( flex: 1; ) .col-2( flex: 2; ) @media (max-width: 800px)( .container( /* Kthejeni një objekt horizontal në një vertikal. */ flex- drejtimi: kolona ;))

Mund ta shihni ndryshueshmërinë e kësaj teknike në udhëzimet: Mënyra më e lehtë për të krijuar.


Krijimi i një fundi të fiksuar

Flexbox CSS ka një zgjidhje të thjeshtë edhe për këtë problem. Duke krijuar një faqe që përmban një footer ngjitës, të shkruar përmes elementëve fleksibël, nuk do të ketë nevojë të mendoni më për faktin se mund të lëvizë.

Aplikimi i ekranit: përkul në etiketën e trupit do të na lejojë të përdorim "modalitetin e përkuljes" në të gjithë paraqitjen. Kur gjithçka të jetë gati, pjesa kryesore e faqes do të jetë një element "fleksibël", dhe fundi një tjetër, kjo do të thjeshtojë manipulimin e pozicioneve të tyre.

...
...
html( lartësia: 100%; ) body( shfaqja: përkul; drejtimi i përkuljes: kolona; lartësia: 100%; ) .main( /* Seksioni kryesor do të mbushë të gjithë hapësirën e lirë të disponueshme në faqe që nuk është e zënë nga fundi */ flex: 1 0 auto; ) footer( /* Fundi do të ndajë saktësisht aq hapësirë ​​sa i nevojitet dhe jo një piksel më shumë */ flex: 0 0 automatik; )

Do të gjeni më shumë informacion rreth kësaj teknike në artikullin "".


konkluzioni

Shumica e shfletuesve sot mbështesin modalitetin fleksibël të paraqitjes, që do të thotë se është e sigurt të thuhet se flexbox është gati të ndihmojë shumë zhvillues.

Shpresoj që ta keni gjetur të dobishëm këtë artikull dhe të keni përmirësuar aftësitë tuaja në CSS. Paç fat!

Flexbox-et janë ideale për krijimin e paraqitjeve të zakonshme të faqeve të internetit, të tilla si faqosja me tre kolona, ​​e ashtuquajtura "Grali i Shenjtë", ku të gjitha kolonat duhet të jenë në lartësi të plotë, pavarësisht nga përmbajtja e tyre. Në të njëjtën kohë, në kodin burimor përmbajtja kryesore vjen para navigimit, dhe në vetë faqen përmbajtja kryesore vjen pas lundrimit.

Si kjo.

Shembull

Një kapak
Neni
Bodrum

Përpara Flexbox, kjo paraqitje ishte mjaft e vështirë për t'u arritur pa përdorur disa hake. Zhvilluesve shpesh iu desh të bënin gjëra të tilla si shtimi i shënjimit shtesë, aplikimi i marzheve negative dhe truket e tjera për të siguruar që gjithçka të rreshtohej siç duhet, pavarësisht nga sasia e përmbajtjes ose madhësia e ekranit. Por, siç tregon shembulli i mësipërm, gjithçka rezulton shumë më e thjeshtë në Flexbox.

Këtu është një përmbledhje e kodit. Në këtë shembull, ne e bëjmë elementin #main një enë flex, dhe lëmë kokën dhe fundin si elementë bllok. Me fjalë të tjera, vetëm pjesa e mesme bëhet flexbox. Këtu është një fragment që e bën atë një enë fleksibël.

#main (ekrani: flex; min-lartësia: llogaritur (100vh - 40vh); )

Thjesht përdorni ekranin: përkul për të bërë një enë fleksibël. Vini re se ne vendosëm gjithashtu lartësinë min duke përdorur funksionin calc() dhe vendosëm #main në 100% të lartësisë së pamjes minus lartësia e kokës dhe bazës (20vh secila). Kjo siguron që faqosja do të mbushë të gjithë lartësinë e ekranit, edhe nëse ka pak përmbajtje. Si rezultat, futeri nuk do të ngrihet kurrë dhe do të lërë hapësirë ​​boshe poshtë tij nëse përmbajtja zë më pak se lartësia e ekranit.

Llogaritja e lartësisë min ishte mjaft e thjeshtë, duke pasur parasysh se ne aplikuam madhësinë e kutisë: kutinë kufitare për të gjithë elementët. Nëse nuk do ta bënim këtë, atëherë do të na duhej të shtonim vlerën e mbushjes në shumën për të zbritur.

Pas instalimit të kontejnerit flex, ne merremi me elementë flex.

#main > artikull ( flex: 1; ) #main > nav, #main > anash ( flex: 0 0 20vw; sfond: beige; ) #main > nav (rendi: -1; )

Vetia flex është stenografi për vetitë flex-grow, flex-shrink dhe flex-basic. Në rastin e parë, ne kemi shkruar vetëm një vlerë, kështu që flex vendos vetinë flex-grow. Në rastin e dytë, ne kemi shkruar të tre vlerat për

Artikujt më të mirë mbi këtë temë