Gli ultimi tutorial di sviluppo web
 

CSS3 Flexible Box


CSS3 Flexbox

Scatole flessibili, o flexbox , è una nuova modalità di layout in CSS3.

L'utilizzo di flexbox assicura che gli elementi si comportano prevedibile quando il layout della pagina deve ospitare schermi di dimensioni diverse e diversi dispositivi di visualizzazione.

Per molte applicazioni, il box model flessibile fornisce un miglioramento rispetto al modello di blocco nel senso che non fa uso di carri, né i margini crollo del contenitore flessibile con i margini del suo contenuto.


Supporto per il browser

I numeri nella tabella indicano la prima versione del browser che supporta pienamente la funzione.

Numeri seguiti da -webkit- o -moz- specificano la prima versione che ha lavorato con un prefisso.

Proprietà
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 Concetti

Flexbox è costituito da contenitori Flex e gli elementi di flessione.

Un contenitore flessibile è dichiarato impostando la display di proprietà di un elemento a uno flex (reso come un blocco) o inline-flex (reso come in linea).

All'interno di un contenitore flessibile vi è uno o più elementi di flessione.

Nota: Tutto al di fuori di un contenitore flessibile e dentro un elemento di flessione è reso come al solito. Flexbox definisce come elementi flex sono disposti all'interno di un contenitore flessibile.

articoli Flex sono posizionati all'interno di un contenitore flessibile lungo una linea flessibile. Per impostazione predefinita, non vi è una sola linea flessibile per contenitore flessibile.

L'esempio seguente mostra tre elementi flessibili. Essi sono posizionati in modo predefinito: lungo la linea di flessione orizzontale, da sinistra a destra:

Esempio

<!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>

Prova tu stesso "

E 'anche possibile cambiare la direzione della linea di flessione.

Se si imposta la direction di proprietà di rtl (da destra a sinistra), il testo è disegnato da destra a sinistra, e anche la linea flex cambia direzione, che cambierà il layout di pagina:

Esempio

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;
}

Prova tu stesso "


Direzione Flex

La flex-direction proprietà specifica la direzione degli elementi flessibili all'interno del contenitore flessibile. Il valore predefinito di flex-direction è row (da sinistra a destra, dall'alto verso il basso).

Gli altri valori sono i seguenti:

  • row-reverse - Se la scrittura-mode (direzione) è da sinistra a destra, gli elementi flessibili saranno disposti da destra a sinistra
  • column - Se il sistema di scrittura è orizzontale, gli elementi flessibili saranno disposti verticalmente
  • column-reverse - Come colonna, ma invertita

L'esempio seguente mostra il risultato dell'utilizzo del row-reverse valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando la column valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando la column-reverse valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "


La giustificare-contenuti Proprietà

La justify-content proprietà allinea orizzontalmente gli elementi del contenitore flessibile quando gli elementi non utilizzare tutto lo spazio disponibile sul principale asse.

I valori possibili sono i seguenti:

  • flex-start - Valore di default. Gli articoli sono posizionati all'inizio del contenitore
  • flex-end - articoli sono posizionate alla fine del contenitore
  • center - articoli sono posizionati al centro del contenitore
  • space-between - Gli articoli sono disposti con lo spazio tra le linee
  • space-around - articoli sono posizionati con spazio prima, tra e dopo le righe

L'esempio seguente mostra il risultato utilizzando il flex-end valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando il center valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato dell'utilizzo space-between valori:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-between;
    justify-content: space-between;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato dell'utilizzo space-around value:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-around;
    justify-content: space-around;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "


I align-oggetti di proprietà

Il align-items proprietà allinea verticalmente gli elementi del contenitore flessibile quando gli elementi non utilizzare tutto lo spazio disponibile sulla croce asse.

I valori possibili sono i seguenti:

  • stretch - Il valore di default. Gli articoli sono allungati per adattarsi al contenitore
  • flex-start - articoli sono posizionati nella parte superiore del contenitore
  • flex-end - articoli sono posizionati nella parte inferiore del contenitore
  • center - Gli articoli sono posizionati al centro del contenitore (in senso verticale)
  • baseline - Gli articoli sono posizionati alla base del contenitore

L'esempio seguente mostra il risultato utilizzando il stretch valore (questo è il valore di default):

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: stretch;
    align-items: stretch;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando il flex-start valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-start;
    align-items: flex-start;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando il flex-end valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-end;
    align-items: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando il center valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando la baseline del valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: baseline;
    align-items: baseline;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "


Il flex-wrap Proprietà

Il flex-wrap proprietà specifica se le voci di flex deve andare a capo o no, se non c'è abbastanza spazio per loro in una linea di flessione.

I valori possibili sono i seguenti:

  • nowrap - Il valore di default. Gli elementi flessibili non avvolgere
  • wrap - Gli elementi flessibili saranno avvolgere se necessario
  • wrap-reverse - Gli elementi flessibili andranno a capo, se necessario, in ordine inverso

L'esempio seguente mostra il risultato dell'utilizzo del nowrap valore (questo è il valore di default):

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: nowrap;
    flex-wrap: nowrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando la wrap valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "

L'esempio seguente mostra il risultato utilizzando il wrap-reverse valore:

Esempio

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap-reverse;
    flex-wrap: wrap-reverse;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Prova tu stesso "


La proprietà align-contenuti

Il align-content di proprietà modifica il comportamento della flex-wrap di proprietà. E 'simile a align-items , ma invece di allineare elementi di flessione, si allinea le linee di flessione.

I valori possibili sono i seguenti:

  • stretch - Il valore di default. Le linee si estendono a prendere lo spazio rimanente
  • flex-start - Le linee sono imballati verso l'inizio del contenitore flessibile
  • flex-end - Le linee sono confezionati verso la fine del contenitore flessibile
  • center - Linee sono imballati verso il centro del contenitore flex
  • space-between - linee sono uniformemente distribuite nel contenitore flessibile
  • space-around - Le linee sono equamente distribuite nel contenitore flessibile, con spazi half-size su entrambi i lati

L'esempio seguente mostra il risultato utilizzando il center valore:

Esempio

.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;
}

Prova tu stesso "


Flex Proprietà elemento

Ordinamento

L' order proprietà specifica l'ordine di un elemento flessibile rispetto al resto degli elementi flessibili all'interno del medesimo contenitore:

Esempio

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

.first {
    -webkit-order: -1;
    order: -1;
}

Prova tu stesso "

Margine

Impostazione margin: auto; assorbirà spazio extra. Può essere usato per spingere gli elementi di flessione in posizioni diverse.

Nel seguente esempio abbiamo impostato margin-right: auto; sul primo elemento flessibile. Questo farà sì che tutto lo spazio supplementare per essere assorbito a destra di tale elemento:

Esempio

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: 10px;
}

.flex-item:first-child {
    margin-right: auto;
}

Prova tu stesso "

perfetta centratura

Nel seguente esempio risolveremo un problema quasi tutti i giorni: perfetto centraggio.

E 'molto facile con FlexBox. Impostazione margin: auto; farà l'oggetto perfettamente centrato in entrambi gli assi:

Esempio

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: auto;
}

Prova tu stesso "

align-auto

Il align-self di proprietà di elementi flessibili prevale proprietà align-oggetti del contenitore flessibile per tale voce. Ha gli stessi valori possibili come il align-items di proprietà.

L'esempio seguente imposta diversi valori align-sé per ogni voce flessione:

Esempio

.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;
}

Prova tu stesso "

flettere

La flex proprietà specifica la lunghezza dell'elemento flessibile, rispetto al resto degli elementi di flessione all'interno dello stesso contenitore.

Nell'esempio seguente, il primo elemento flessibile consumerà 2/4 dello spazio libero, e gli altri due elementi di flessione consumerà 1/4 dello spazio libero ciascuno:

Esempio

.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;
}

Prova tu stesso "


Esempi

Altri esempi

Creare un sito web reattivo con FlexBox
Questo esempio dimostra come creare un layout del sito reattivo con FlexBox.


CSS3 Proprietà Flexbox

Nella tabella seguente sono elencate le proprietà CSS usati con FlexBox:

Property Description
display Specifies the type of box used for an HTML element
flex-direction Specifies the direction of the flexible items inside a flex container
justify-content Horizontally aligns the flex items when the items do not use all available space on the main-axis
align-items Vertically aligns the flex items when the items do not use all available space on the cross-axis
flex-wrap Specifies whether the flex items should wrap or not, if there is not enough room for them on one flex line
align-content Modifies the behavior of the flex-wrap property. It is similar to align-items, but instead of aligning flex items, it aligns flex lines
flex-flow A shorthand propert for flex-direction and flex-wrap
order Specifies the order of a flexible item relative to the rest of the flex items inside the same container
align-self Used on flex items. Overrides the container's align-items property
flex Specifies the length of a flex item, relative to the rest of the flex items inside the same container