CSS3 Flexbox
Cutii flexibile, sau flexbox , este un nou mod de dispunere în CSS3.
Utilizarea flexbox asigură că elementele se comportă în mod previzibil , atunci când aspectul paginii trebuie să accepte diferite dimensiuni de ecran și diferite dispozitive de afișare.
Pentru multe aplicații, modelul de cutie flexibilă oferă o îmbunătățire față de modelul de bloc în care acesta nu utilizează flotoare, nici nu colaps marjele containerului flexibil cu marginile conținutului său.
Suport pentru browser-
Numerele din tabel specifica prima versiune de browser care acceptă pe deplin caracteristica.
Numerele urmat de -webkit- sau -moz- specifica prima versiune care a lucrat cu un prefix.
Proprietate | |||||
---|---|---|---|---|---|
Basic support (single-line flexbox) |
29.0 21.0 -webkit- |
11.0 | 22.0 18.0 -moz- |
6.1 -webkit- | 12.1 -webkit- |
Multi-line flexbox | 29.0 21.0 -webkit- |
11.0 | 28.0 | 6.1 -webkit- | 17.0 15.0 -webkit- 12.1 |
CSS3 Flexbox Concepte
Flexbox constă în containere flexibile și elemente flex.
Un container flexibil este declarată prin setarea de display
proprietate a unui element fie flex
(rendered as a block) sau inline-flex
(rendered as inline) .
În interiorul unui container flexibil există unul sau mai multe elemente flex.
Notă: Totul în afara unui container flexibil și în interiorul unui element flexibil este redat ca de obicei. Flexbox definește modul în care elementele flex sunt dispuse în interiorul unui container flexibil.
Flex elemente sunt poziționate în interiorul unui container flexibil de-a lungul unei linii flex. În mod implicit există doar o singură linie flex per container flex.
Următorul exemplu prezintă trei elemente flex. Acestea sunt poziționate în mod implicit: de-a lungul liniei flex orizontală, de la stânga la dreapta:
Exemplu
<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
display: -webkit-flex;
display: flex;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
.flex-item
{
background-color: cornflowerblue;
width: 100px;
height: 100px;
margin: 10px;
}
</style>
</head>
<body>
<div
class="flex-container">
<div class="flex-item">flex item 1</div>
<div class="flex-item">flex item 2</div>
<div
class="flex-item">flex item 3</div>
</div>
</body>
</html>
De asemenea, este posibil să se schimbe direcția liniei de flex.
Dacă ne - am stabilit direction
proprietatea de a rtl
(right-to-left) de la (right-to-left) , textul este tras la dreapta la stânga, și , de asemenea , linia flex schimbă direcția, care va schimba aspectul paginii:
Exemplu
body {
direction: rtl;
}
.flex-container {
display: -webkit-flex;
display: flex;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
.flex-item
{
background-color: cornflowerblue;
width: 100px;
height: 100px;
margin: 10px;
}
Direcția Flex
flex-direction
proprietate specifică direcția elementelor flexibile din interiorul containerului flexibil. Valoarea implicită a flex-direction
este row
( de la stânga la dreapta, de sus în jos).
Celelalte valori sunt după cum urmează:
-
row-reverse
- În cazul în scris-mode (direction) este la stânga la dreapta, elementele flex vor fi dispuse la dreapta la stânga -
column
- În cazul în care sistemul de scriere este orizontală, elementele flex vor fi dispuse vertical -
column-reverse
- La fel ca și coloană, dar inversat
Exemplul următor arată rezultatul utilizării row-reverse
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row-reverse;
flex-direction:
row-reverse;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul utilizării column
valorii:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction:
column;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul folosind column-reverse
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column-reverse;
flex-direction:
column-reverse;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Justifica conținut de proprietate
justify-content
de proprietate aliniază orizontal elemente containerul flexibil atunci când elementele nu folosesc tot spațiul disponibil pe principala axa.
Valorile posibile sunt după cum urmează:
-
flex-start
- valoarea implicită. Elementele sunt poziționate la începutul containerului -
flex-end
- Elementele sunt poziționate la capătul containerului -
center
- Elementele sunt poziționate în centrul containerului -
space-between
- Elementele sunt poziționate cu spațiul dintre liniile -
space-around
înspace-around
de - Elementele sunt poziționate cu spațiu înainte, între și după liniile
Exemplul următor arată rezultatul folosind flex-end
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: flex-end;
justify-content:
flex-end;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul utilizării center
valorii:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: center;
justify-content:
center;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul folosind space-between
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: space-between;
justify-content:
space-between;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul utilizării space-around
în space-around
valorii:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-justify-content: space-around;
justify-content:
space-around;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Align-elemente de proprietate
align-items
proprietatea aliniază vertical elemente containerul flexibil atunci când elementele nu folosesc tot spațiul disponibil pe axa transversală.
Valorile posibile sunt după cum urmează:
-
stretch
- valoarea implicită. Elementele sunt întinse pentru a se potrivi containerului -
flex-start
- Elementele sunt poziționate în partea superioară a containerului -
flex-end
- Elementele sunt poziționate în partea inferioară a recipientului -
center
- Elementele sunt poziționate în centrul containerului (vertically) - de
baseline
- Elementele sunt poziționate la linia de bază a containerului
Exemplul următor arată rezultatul folosind stretch
valoarea (this is the default value) :
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: stretch;
align-items:
stretch;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul folosind flex-start
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: flex-start;
align-items:
flex-start;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul folosind flex-end
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: flex-end;
align-items:
flex-end;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul utilizării center
valorii:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items:
center;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul utilizării de baseline
valoarea:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-align-items: baseline;
align-items:
baseline;
width:
400px;
height: 250px;
background-color:
lightgrey;
}
Proprietatea flex-wrap
flex-wrap
proprietate specifică dacă elementele flex ar trebui să înveliți sau nu, în cazul în care nu există spațiu suficient pentru ei pe o singură linie flex.
Valorile posibile sunt după cum urmează:
-
nowrap
- Valoare implicită. Elementele flexibile nu vor încheia -
wrap
- Elementele flexibile vor încheia , dacă este necesar -
wrap-reverse
- Elementele flexibile se vor încheia, dacă este necesar, în ordine inversă
Exemplul următor arată rezultatul utilizării nowrap
valorii (this is the default value) :
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: nowrap;
flex-wrap: nowrap;
width:
300px;
height: 250px;
background-color:
lightgrey;
}
Următorul exemplu arată rezultatul folosind wrap
de valoare:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
width:
300px;
height: 250px;
background-color:
lightgrey;
}
Exemplul următor arată rezultatul utilizării wrap-reverse
valoare:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap-reverse;
flex-wrap:
wrap-reverse;
width:
300px;
height: 250px;
background-color:
lightgrey;
}
Proprietatea Align continut
align-content
de proprietate modifică comportamentul flex-wrap
proprietate. Este similar cu align-items
, dar în loc de aliniere elemente flex, se aliniază liniile de flex.
Valorile posibile sunt după cum urmează:
-
stretch
- valoarea implicită. Liniile se întind pentru a prelua spațiul rămas -
flex-start
- Liniile sunt ambalate spre începutul containerului flexibil -
flex-end
- Liniile sunt ambalate spre capătul containerului flexibil -
center
- Liniile sunt ambalate spre centrul containerului flexibil -
space-between
- Liniile sunt distribuite uniform în container flexibil -
space-around
înspace-around
- Liniile sunt distribuite uniform în container flexibil, cu spații de jumătate de dimensiune la fiecare capăt
Exemplul următor arată rezultatul utilizării center
valorii:
Exemplu
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap;
flex-wrap:
wrap;
-webkit-align-content: center;
align-content:
center;
width:
300px;
height: 300px;
background-color:
lightgrey;
}
Proprietăți articol Flex
ordonare
order
Proprietatea specifica ordinea unui element relativ flexibil , cu restul elementelor flexibile din interiorul aceluiași container:
Exemplu
.flex-item {
background-color: cornflowerblue;
width: 100px;
height: 100px;
margin: 10px;
}
.first {
-webkit-order: -1;
order: -1;
}
margine
Setarea margin: auto;
va absorbi spațiu suplimentar. Acesta poate fi folosit pentru a împinge elemente flex în poziții diferite.
În exemplul următor am stabilit margin-right: auto;
de margin-right: auto;
pe primul element flexibil. Acest lucru va face ca tot spațiul suplimentar să fie absorbit la dreapta acestui element:
Exemplu
.flex-item {
background-color: cornflowerblue;
width: 75px;
height: 75px;
margin: 10px;
}
.flex-item:first-child {
margin-right: auto;
}
Perfect Centering
În exemplul următor vom rezolva o problemă aproape zilnic: centrare perfectă.
Este foarte ușor cu flexbox. Setarea margin: auto;
va face elementul perfect centrat în ambele axe:
Exemplu
.flex-item {
background-color: cornflowerblue;
width: 75px;
height: 75px;
margin: auto;
}
alinierea auto
align-self
proprietatea elemente flex suprascrie containerul flexibil de proprietate align-elemente pentru elementul respectiv . Ea are aceleași valori posibile ca align-items
de proprietate.
Exemplul următor prezintă diferite valori Align personale la fiecare element flex:
Exemplu
.flex-item {
background-color: cornflowerblue;
width: 60px;
min-height: 100px;
margin: 10px;
}
.item1 {
-webkit-align-self: flex-start;
align-self:
flex-start;
}
.item2 {
-webkit-align-self: flex-end;
align-self: flex-end;
}
.item3 {
-webkit-align-self: center;
align-self: center;
}
.item4 {
-webkit-align-self:
baseline;
align-self: baseline;
}
.item5 {
-webkit-align-self: stretch;
align-self: stretch;
}
contracta
flex
Proprietatea specifică lungimea elementului flexibil, în raport cu restul elementelor din interiorul flex același container.
În exemplul următor, primul element flex va consuma 2/4 din spațiul liber, iar celelalte două elemente de flexare va consuma 1/4 din spațiul liber fiecare:
Exemplu
.flex-item {
background-color: cornflowerblue;
margin: 10px;
}
.item1 {
-webkit-flex: 2;
flex: 2;
}
.item2 {
-webkit-flex: 1;
flex: 1;
}
.item3 {
-webkit-flex: 1;
flex: 1;
}
Mai multe exemple
Creați un site receptiv cu flexbox
Acest exemplu demonstrează modul de a crea un aspect site-ul receptiv cu flexbox.
CSS3 flexbox Proprietăți
Tabelul următor listează proprietățile CSS utilizate cu flexbox:
Proprietate | Descriere |
---|---|
display | Specifică tipul de cutie utilizat pentru un element HTML |
flex-direction | Specifică direcția elementelor flexibile în interiorul unui container flexibil |
justify-content | aliniază Orizontal elementele flex, atunci când elementele nu folosesc tot spațiul disponibil pe principala axa |
align-items | aliniază elementele Vertically flex, atunci când elementele nu folosesc tot spațiul disponibil pe axa transversală |
flex-wrap | Specifică dacă elementele flexibile trebuie să înveliți sau nu, în cazul în care nu există spațiu suficient pentru ei pe o linie flex |
align-content | Modifică comportamentul de proprietate flex-wrap. Este similar cu alinierea-elemente, dar în loc de aliniere elemente flex, se aliniază liniile flex |
flex-flow | Un Propr prescurtare pentru flex-direcție și flex-folie |
order | Specifică ordinea unui element relativ flexibil, cu restul elementelor din interiorul flex același container |
align-self | Folosit pe elemente flex. Suprascrie Align-articole recipientului proprietate |
flex | Specifică lungimea unui element flexibil, în raport cu restul elementelor din interiorul flex același container |