flex
Lastnost je sub-lastnost modula Fleksibilna Box postavitve.
To je okrajšava za flex-grow
, flex-shrink
in flex-basis
. Drugi in tretji parameter ( flex-shrink
in flex-basis
) sta neobvezna.
Sintaksa
flex: none | ( ? || ) .flex-item ( /* this */ flex: 1 100px; /* is the same as */ flex-grow: 1; flex-basis: 100px; /* and it leaves the flex-shrink property alone, which would be */ flex-shrink: inherit; /* defaults to 1 */ )
Tukaj je pregled, na kaj se vrednosti preslikajo, odvisno od tega, koliko vrednosti mu daste:
flex: none /* value 'none' case */ flex: /* One value syntax, variation 1 */ flex: /* One value syntax, variation 2 */ flex: /* Two values syntax, variation 1 */ flex: /* Two values syntax, variation 2 */ flex: /* Three values syntax */ flex: inherit
Skupne vrednosti za flex
flex: 0 samodejno;
To je isto kot flex: initial;
in okrajšava za privzete vrednosti: flex: 0 1 auto
. Element prilagodi glede na lastnosti width
/ height
lastnosti (ali vsebino, če ni nastavljena).
Zaradi fleksibilnega predmeta je prožen prostor, ko ostane nekaj prostega prostora, vendar mu omogoča, da se zmanjša, ko ni dovolj prostora. Sposobnosti poravnave ali auto
robove je mogoče uporabiti za poravnavo upogibnih elementov vzdolž glavne osi.
flex: samodejno;
To je enakovredno flex: 1 1 auto
. Pazite, to ni privzeta vrednost. Element prilagodi glede na lastnosti width
/ height
lastnosti, vendar je popolnoma prilagodljiv, tako da absorbira dodaten prostor vzdolž glavne osi.
Če so vsi elementi bodisi flex: auto
, flex: initial
ali flex: none
, bo preostali prostor po velikosti elementov enakomerno porazdeljen med elemente z flex: auto
.
fleks: noben;
To je enakovredno flex: 0 0 auto
. To velikosti element po njegovih width
/ height
lastnosti, vendar je to popolnoma neprilagodljiv.
To je podobno, flex: initial
le da se ne sme skrčiti, tudi v prelivni situaciji.
fleks:
Enakovredno flex: 1 0px
. Zaradi tega fleksibilni element postane fleksibilen in osnovo fleksibilnosti nastavi na nič, zaradi česar dobi element, ki prejme določen delež preostalega prostora.
Če vsi predmeti v fleks posodi uporabljajo ta vzorec, bodo njihove velikosti sorazmerne z določenim faktorjem upogibanja.
Demo
Naslednja predstavitev prikazuje zelo preprosto postavitev s Flexboxom zahvaljujoč flex
lastnosti:
Tu je razkrit delček kode:
.header, .footer ( flex: 1 100%; ) .sidebar ( flex: 1; ) .main ( flex: 2; )
Najprej smo dovolili, da se elementi flex prikazujejo v več vrsticah z flex-flow: row wrap
.
Nato v glavi in nogi povemo, naj zavzameta 100% trenutne širine vidnega polja, ne glede na to.
Glavna vsebina in obe stranski vrstici bosta delili isto vrstico, preostali prostor pa si delita, kot sledi: 66% (2 / (1 + 2)) za glavno vsebino, 33% (1 / (1 + 2)) za stransko vrstico .
Podpora za brskalnik
- (moderno) pomeni nedavno sintakso iz specifikacije (npr.
display: flex;
) - (hibrid) pomeni nenavadno neuradno skladnjo iz leta 2011 (npr.
display: flexbox;
) - (staro) pomeni staro skladnjo iz leta 2009 (npr.
display: box;
)
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
21+ (moderno) 20- (staro) | 3,1+ (staro) | 2–21 (stari) 22+ (novi) | 12,1+ (moderno) | 10+ (hibrid) | 2,1+ (staro) | 3,2+ (staro) |
Brskalnik Blackberry 10+ podpira novo sintakso.
Za več informacij o tem, kako mešati sintakse, da dobite najboljšo podporo za brskalnik, si oglejte ta članek (CSS-triki) ali ta članek (DevOpera).