Web / 09 September 2023

CSS Flexbox II

Proprietà elementi flex

by A2G-Webroom

Proprietà elementi flex


Larghezza - HTML di esempio



<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
  display: flex;
  background-color: grey;
}

.flex-item {
  background-color: white;
  width: 150px;
  margin: 10px;
  text-align: center;
  line-height: 100px;
  font-size: 36px;
}
</ style>

</head>
<body>

<div class="flex-container">
  <div class="flex-item">Item 1 - 150px</div>
  <div class="flex-item">Item 2 - 150px</div>
  <div class="flex-item">Item 3 - 150px</div>
  <div class="flex-item">Item 3 - 150px</div>
</div>
</body>
</html>

Il container flex ha proprietà predefinite per impostare la larghezza definitiva da applicare a tutti gli elementi flex interni, flex-grow, flex-shrink, flex-basis:
flex-grow: 0;   ( nessun aumento larghezza )
flex-shrink: 1; ( possibile restrizione larghezza )
flex-basis: auto; ( controlla opzioni larghezza )

Che con la sintassi abbreviata diventa:

flex: 0 1 auto;   ( flex-shrink = 1 )

Queste proprietà possono essere modificate per i singoli elementi flex con le modalità che seguono.

Flex grow




Aumento larghezza degli elementi

La proprietà Flex grow consente all'elemento flex di crescere per riempire lo spazio del container flex lasciato vuoto, dopo avere sommato la larghezza di tutti gli altri elementi flex.

Possiamo assegnare ad uno o più elementi questa proprietà:


Come assegna la larghezza finale questa proprietà??

1 - Calcola la dimensione del container flex ( Esempio 1: 1140 px )

2 - Calcola la dimensione totale degli elementi flex interni al container ( Esempio 2 : 150+150+150+150 = 600px )

3 - Calcola lo spazio residuo Esempio 1-2 ( 1140 - 600 = 540 px )

4 - Somma il valore flex-grow di ogni articolo

Item 1  flex-grow: 0;   Conteggia 0
Item 2  flex-grow: 2;   Conteggia 2
Item 3  flex-grow: 3;   Conteggia 3
Item 4  flex-grow: 1;   Conteggia 1

5 - Totale valori flex-grow = 6

6 - Divide con questo totale lo spazio residuo ( punto 3 ) = 540:6 = 90px

7 -Aggiunge questi 90px agli elementi interni moltiplicato per il valore flex-grow loro assegnato

Item 1  flex-grow: 0;   Aggiunge 0
Item 2  flex-grow: 2;   Aggiunge 180
Item 3  flex-grow: 3;   Aggiunge 270
Item 4  flex-grow: 1;   Aggiunge 90

Esempio senza e con flex-grow

display-grow


Flex shrink




Riduzione larghezza elementi

La proprietà Flex flex-shrink consente all'elemento flex, al contrario di flex-grow, di restringersi della quantità di spazio mancante al container flex, dopo avere sommato la larghezza di tutti gli altri elementi flex.


Il valore predefinito, che quindi si omette, è:  flex-shrink: 1;


display-wrap


In caso contrario avremmo l'esempio sottostante con:  flex-shrink: 0; .


display-wrap



La formula operativa è inversa da quella di Flex grow.

1 - Calcola la dimensione del container flex ( Esempio 1: 1140 px )

2 - Calcola la dimensione totale degli elementi flex interni al container ( Esempio 2 : 400+400+400+400 = 1600px )

3 - Calcola lo spazio mancante Esempio 1-2 ( 1140 - 1600 = - 460px )

4 - Somma il valore flex-shrink di ogni articolo

Item 1  flex-shrink: 1;   Conteggia 1
Item 2  flex-shrink: 3;   Conteggia 3
Item 3  flex-shrink: 1;   Conteggia 1
Item 4  flex-shrink: 1;   Conteggia 1

5 - Totale valori flex-shrink = 6

6 - Divide con questo totale lo spazio mancante ( punto 3 ) = 460:6 = 76,667px

7 -Sottrae questi 76,667px agli elementi interni moltiplicato per il valore flex-shrink loro assegnato

Item 1  flex-shrink: 1;   Sottrae 76,667 Totale finale 323,333px
Item 2  flex-shrink: 3;   Sottrae 230        Totale finale 170px
Item 3  flex-shrink: 1;   Sottrae 76,667 Totale finale 323,333px
Item 4  flex-shrink: 1;   Sottrae 76,667 Totale finale 323,333px



Esempio


display-wrap



Flex basis




Larghezza degli elementi

Questa proprietà imposta la dimensione iniziale di un elemento flex,  se non diversamente impostato con flex-grow oppure flex-shrink.
La proprietà   flex-basis è praticamente un'altra forma di widht per definire la larghezza dell'elemento.   Il browser se non trova flex-basis prenderà il valore widht.

Principali valori che Flex basis puo avere per definire la larghezza:
- numero: definisce la larghezza in px, em od anche in percentuale
flex-basis: 600px;
flex-basis: 50%;
flex-basis: 0;
- auto: prende la larghezza definita con widht
flex-basis: auto;
- content: adegua la larghezza al contenuto
flex-basis: content;
Nella pratica si lascia il valore che container flex assegna a tale proprietà come predefinito,  cioè auto.

Esempi

Item 1
widht: 400px;
flex-basis: 600px;

Item 2
widht: 400px;

display-wrap

L'esempio sopra lascia dello spazio vuoto perchè il container è più grande (1140 px). Per ovviare a questo problema possiamo usare le percentuali

Item 1
widht: 400px;
flex-basis: 60%;

Item 2
widht: 40%;

display-wrap

Oppure inserire flex-grow con valori uguali

Item 1
widht: 400px;
flex-basis: 600px;
flex-grow: 1;

Item 2
widht: 400px;
flex-grow: 1;

display-wrap

Item 1
widht: 400px;
flex-basis: 0; ( si adegua alla parola più grande del contenuto )

Item 2
widht: 40%;

display-wrap

Item 1
widht: 400px;
flex-basis: content; ( si adegua al contenuto )

Item 2
widht: 40%;

display-wrap

Flex order




Ordine degli elementi

L'impostazione predefinita è:  order: 0;
L'ordine degli elementi segue la scrittura del codice.
E' possibile ridefinire, ove occorra, l'ordine degli elementi flex con questa proprietà dando un valore negativo


Esempio

Item 3 - order: -1;

flex order





Articoli Relativi

PHP Code 5

A2G-Webroom 4 marzo 2024

PHP Code 4

A2G-Webroom 29 febbraio 2024

PHP Code 3

A2G-Webroom 27 febbraio 2024

PHP Code 3

A2G-Webroom 27 febbraio 2024

Sentenze Fideiussioni Specifiche

Gis-Bert46 04 February 2024