flex
Proprietatea este o sub-proprietate a modulului flexibil Box Layout.
Aceasta este prescurtare pentru flex-grow
, flex-shrink
și flex-basis
. Al doilea și al treilea parametru ( flex-shrink
și flex-basis
) sunt opționale.
Sintaxă
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 */ )
Iată detaliile referitoare la valorile alocate în funcție de câte valori îi acordați:
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
Valori comune pentru flex
flex: 0 auto;
Acest lucru este la fel ca flex: initial;
și prescurtare pentru valoarea implicită: flex: 0 1 auto
. Mărește elementul pe baza width
/ height
proprietăților sale (sau a conținutului său, dacă nu este setat).
Face obiectul flexibil inflexibil atunci când mai este spațiu liber, dar îi permite să se micșoreze la minim atunci când nu există suficient spațiu. Abilitățile sau auto
marginile de aliniere pot fi folosite pentru a alinia elementele flexibile de-a lungul axei principale.
flex: auto;
Acest lucru este echivalent cu flex: 1 1 auto
. Atenție, aceasta nu este valoarea implicită. Mărește articolul în funcție de width
/ height
proprietățile sale , dar îl face complet flexibil, astfel încât să absoarbă orice spațiu suplimentar de-a lungul axei principale.
Dacă toate articolele sunt fie flex: auto
,, flex: initial
fie flex: none
, orice spațiu rămas după ce elementele au fost dimensionate va fi distribuit uniform către articolele cu flex: auto
.
flex: none;
Acest lucru este echivalent cu flex: 0 0 auto
. Mărește articolul în funcție de width
/ height
proprietățile sale , dar îl face complet inflexibil.
Acest lucru este similar cu flex: initial
excepția faptului că nu este permis să se micșoreze, chiar și într-o situație de revărsare.
contracta:
Echivalent cu flex: 1 0px
. Face elementul flexibil flexibil și setează baza flex la zero, rezultând un articol care primește proporția specificată din spațiul rămas.
Dacă toate articolele din containerul flex utilizează acest model, dimensiunile lor vor fi proporționale cu factorul flex specificat.
Demo
Următoarea demonstrație arată un aspect foarte simplu cu Flexbox datorită flex
proprietății:
Iată fragmentul revelator de cod:
.header, .footer ( flex: 1 100%; ) .sidebar ( flex: 1; ) .main ( flex: 2; )
În primul rând, am autorizat ca elementele flexibile să fie afișate pe mai multe rânduri cu flex-flow: row wrap
.
Apoi le spunem atât antetului, cât și subsolului să ia 100% din lățimea curentă a ferestrei, indiferent de ce.
Și conținutul principal și ambele bare laterale vor împărți același rând, împărțind spațiul rămas după cum urmează: 66% (2 / (1 + 2)) pentru conținutul principal, 33% (1 / (1 + 2)) pentru bara laterală .
Suport pentru browser
- (modern) înseamnă sintaxa recentă din specificație (de exemplu
display: flex;
) - (hibrid) înseamnă o sintaxă neoficială ciudată din 2011 (de exemplu
display: flexbox;
) - (vechi) înseamnă sintaxa veche din 2009 (de exemplu
display: box;
)
Crom | Safari | Firefox | Operă | IE | Android | iOS |
---|---|---|---|---|---|---|
21+ (modern) 20- (vechi) | 3.1+ (vechi) | 2-21 (vechi) 22+ (nou) | 12.1+ (modern) | 10+ (hibrid) | 2.1+ (vechi) | 3.2+ (vechi) |
Browserul Blackberry 10+ acceptă noua sintaxă.
Pentru mai multe informații despre cum să amestecați sintaxele pentru a obține cea mai bună asistență pentru browser, consultați acest articol (CSS-Tricks) sau acest articol (DevOpera).