caricato da Utente13446

css-flexbox-lorenzo-guardabascio

Flex-box
Lorenzo Guardabascio
Web design specialist
2017/2018
Facciamo un quadro generale
Prima di parlare della variabile display flex è bene fare una veloce
panoramica sui vari gestori di output.
●
●
●
Il display gestisce il modo in cui un elemento va in output tramite le
sue variabili;
○ Block: inizia su una nuova riga e si allunga da sinistra a destra più
che può;
○ Inline: può anche racchiudere del testo all'interno un paragrafo
senza disturbare il flusso di quel paragrafo;
○ Table: Ideati per la progettazione e gestione delle tabelle;
○ Grid: ideale per la gestione in griglie dei layout;
Positioned: per la gestione indipendente degli elementi;
Float: utilizzato maggiormente per costruire layout multicolonna.
Perchè il flex ?
Il layout Flexbox o più comunemente chiamato flex è nato per rendere
semplice e immediata la gestione di box all’interno di un elemento
contenitore e per risolvere problematiche come la centratura degli
elementi, la loro disposizione sull’asse orizzontale o su quello
verticale,la configurazione e la gestione dello spazio disponibile
presente con gli altri elementi.
Perchè il flex ?
Ad esempio:
Nel caso in cui avessimo necessità di posizionare due elementi in
modo centrale, di egual distanza tra loro ed il margine, all’interno di un
terzo elemento, potremmo procedere in svariati modi ma prenderemo
come esempio:
▪
▪
il posizionamento tramite la gestione dei margini ed il display
inline-block
Il flexbox
Perchè il flex ?
Senza l’utilizzo del flex
Con flexbox
Addio alle altre regole?
Ovviamente no, questa proprietà non sostituisce non regole
come Float, Position, Table che gestiscono determinate
strutture, ma si pone come uno strumento in più e quindi un
valore aggiunto per gestire al meglio strutture HTML.
Compatibilità
La proprietà flex è una proprietà relativamente nuova ed ha oramai
raggiunto una compatibilità completa con i vari browser,solo dopo alcuni
anni di sviluppo.
Come possiamo vedere dalla tabella oramai tutti i browser sono
pienamente compatibili.
Il funzionamento
Il modello Flex si basa
Sulle due assi principali:
○ il main axis, l’asse orizzontale – x;
○ il cross axis, l’asse verticale – y;
Il funzionamento
Su due elementi costitutivi:
○ un elemento contenitore (flex container): è quello che contiene
i box flessibili e viene generato applicando il valore flex alla
variabile display;
○ box flessibili (flex items): sono solo gli elementi figli
dell’elemento contenitore che assumono come loro
caratteristica fondamentale quella della ‘flessibilità’.
Proprietà
Le proprietà relative ai display flex si dividono in due
macro categorie in base all’elemento su cui agiscono
●
●
Proprietà contenitore
Proprietà contenuto
Ma... in pratica ?
Per la costruzione di un flexbox bisogna
1. attribuire il valore “flex “ alla proprietà “Display” di un elemento
contenitore;
2. Aggiungere le altre variabili che si vogliono assegnare al
contenitore;
3. Aggiungere le variabili agli elementi flex nel caso in cui se ne
abbia bisogno.
Le possibili variabili con relativi valori sono i seguenti:
Prima categoria
flex-direction
Definisce l'asse secondo cui gli elementi si devono allineare all'interno del
contenitore. Flexbox comporta un allineamento a direzione singola, righe
orizzontali o colonne verticali.
Row
Row-reverse
Column
Column-reverse
Prima categoria
flex-wrap
Di default tutti gli elementi flex tenteranno di adattarsi o calzare su una sola
linea, si può cambiare questo comportamento dando la possibilità agli
elementi di espandersi in più linee a seconda delle necessità.
nowrap
wrap
wrap-reverse
Prima categoria
flex-flow
Abbreviazione per le proprietà flex-direction e flex-wrap, il valore di
default è row nowrap.
Prima categoria
justify-content
Definisce l'allineamento nell'asse orizzontale. Definisce come distribuire lo
spazio libero tra gli elementi.
flex-start
flex-end
flex-center
space-between
space-around
Prima categoria
align-items
Definisce l'allineamento nell'asse verticale e come distribuire lo spazio
libero tra gli elementi.
flex-stretch
center
flex-start
baseline
flex-end
Prima categoria
align-content
Definisce l'allineamento nell'asse verticale, ma a differenza della proprietà di
align-items distribuisce lo spazio libero tra gruppi di elementi che stanno in
una singola linea.
stretch
flex-start
flex-end
center
space-between
space-around
Seconda categoria
order
Dando un valore all'elemento si può cambiare l'ordine di comparsa
Seconda categoria
flex
Come flex-flow, è un abbreviazione per flex-grow, flex-shrink e flex-basis
combinate.
●
●
●
flex-grow
Definisce la capacità di un elemento di crescere, si può specificare
un valore unitario per alcuni elementi e un valore più alto per alcuni;
flex-basis
Definisce lo spazio di default di un elemento prima che lo spazio
rimanente sia distribuito. Può avere dimensione del tipo (5%, 5rem
…);
flex-shrink
Definisce l'abilità di un elemento di contrarsi se necessario.
default 1.
Seconda categoria
align-self
Attraverso questa proprietà si può sovrascrivere la proprietà definita da
align-items per singoli elementi.
esempio :
flex-end
stretch
Conclusioni
Grazie alle dimostrazioni di tutte le variabili e relative proprietà è possibile
capire il vero potenziale della variabile flex ossia :
●
Una netta diminuzione delle righe di codice css necessarie per
creare strutture prima complesse;
●
Una minore difficoltà per i programmatori nel gestione strutture di
diverse grandezze senza dover intaccare la loro struttura originaria;
●
Una netta semplificazione nella creazione di layout responsive .