W3docs

Proprietà CSS flex-wrap

La proprietà CSS flex-wrap definisce se gli elementi devono andare a capo o meno. Guarda esempi con diversi valori.

La proprietà flex-wrap controlla se gli elementi in un flex container vengono forzati su una singola riga o possono andare a capo su più righe. Per impostazione predefinita, un flex container cerca di far stare tutti i suoi elementi su una riga, anche se questo significa restringerli o farli traboccare. Impostare flex-wrap: wrap consente agli elementi di fluire su nuove righe quando non c'è spazio sufficiente.

Questa è la proprietà a cui si ricorre quando una riga di card, tag o link di navigazione deve adattarsi elegantemente su schermi stretti invece di traboccare o essere compressa.

flex-wrap influisce solo sugli elementi che sono flex item, quindi non ha effetto a meno che il genitore abbia display: flex (o display: inline-flex). Se un flex container non ha elementi, la proprietà non fa nulla.

La proprietà flex-wrap è una delle proprietà CSS3 e si abbina strettamente a flex-direction: insieme vengono comunemente scritte come la shorthand flex-flow.

Questo capitolo spiega ogni valore di flex-wrap, come il wrapping interagisce con l'asse principale e i problemi da tenere d'occhio.

Valore inizialenowrap
Si applica aFlex container.
EreditatoNo.
AnimabileNo.
VersioneCSS3
Sintassi DOMobject.style.flexWrap = "wrap-reverse";

Come funziona il wrapping

Il wrapping avviene lungo l'asse trasversale, perpendicolare all'asse principale definito da flex-direction:

  • Con il valore predefinito flex-direction: row, gli elementi si dispongono da sinistra a destra. Quando flex-wrap: wrap è attivo e gli elementi esauriscono lo spazio orizzontale, l'elemento successivo inizia una nuova riga in basso.
  • Con flex-direction: column, gli elementi si accumulano dall'alto verso il basso e il wrapping sposta gli elementi in eccesso in una nuova colonna accanto alla prima.

Una conseguenza fondamentale: quando flex-wrap è nowrap (il valore predefinito), i flex item si restringono per adattarsi al container (entra in gioco il loro flex-shrink) o ne traboccano. Solo una volta che il wrapping è consentito gli elementi mantengono le loro dimensioni preferite e si spostano su una nuova riga.

Quando gli elementi vanno a capo su più righe, lo spazio tra quelle righe è controllato da align-content, mentre l'allineamento degli elementi all'interno di una singola riga è controllato da align-items. Su una singola riga senza wrapping, align-content non ha effetto.

Sintassi

Sintassi della proprietà CSS flex-wrap

flex-wrap: nowrap | wrap | wrap-reverse | initial | inherit;

Esempio della proprietà flex-wrap con il valore "wrap":

Il container qui sotto è largo 200px e contiene sei box da 50px (300px di contenuto). Con flex-wrap: wrap, i box che non trovano spazio nella prima riga scendono in una seconda riga invece di restringersi:

Esempio della proprietà CSS flex-wrap con il valore wrap

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .wrap {
        width: 200px;
        height: 200px;
        border: 1px solid #cccccc;
        display: flex;
        flex-wrap: wrap;
      }
      .wrap div {
        width: 50px;
        height: 50px;
      }
    </style>
  </head>
  <body>
    <h2>The flex-wrap Property</h2>
    <div class="wrap">
      <div style="background-color:coral;">A</div>
      <div style="background-color:lightblue;">B</div>
      <div style="background-color:khaki;">C</div>
      <div style="background-color:pink;">D</div>
      <div style="background-color:lightgrey;">E</div>
      <div style="background-color:lightgreen;">F</div>
    </div>
  </body>
</html>

Esempio della proprietà flex-wrap con il valore "nowrap":

Con il valore predefinito nowrap, gli stessi sei box vengono forzati su una singola riga. Poiché non c'è spazio per tutti, vengono compressi a una larghezza inferiore ai 50px dichiarati:

Esempio della proprietà CSS flex-wrap con il valore nowrap

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .example {
        width: 200px;
        height: 200px;
        border: 1px solid #c3c3c3;
        display: flex;
        flex-wrap: nowrap;
      }
      .example div {
        width: 50px;
        height: 50px;
      }
    </style>
  </head>
  <body>
    <h2>Flex-wrap property example</h2>
    <div class="example">
      <div style="background-color: #8ebf42;">A</div>
      <div style="background-color: #1c87c9;">B</div>
      <div style="background-color: #cccccc;">C</div>
      <div style="background-color: #666666;">D</div>
      <div style="background-color: #4c4a4a;">E</div>
      <div style="background-color: #c6c4c4;">F</div>
    </div>
  </body>
</html>

Risultato

Proprietà CSS flex-wrap

Esempio della proprietà flex-wrap con il valore "wrap-reverse":

wrap-reverse consente anche agli elementi di fluire su più righe, ma inverte la direzione dell'asse trasversale: le righe si accumulano verso l'alto invece che verso il basso, quindi la prima riga appare in fondo:

Esempio della proprietà CSS flex-wrap con il valore wrap-reverse

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .example {
        width: 200px;
        height: 200px;
        border: 1px solid #c3c3c3;
        display: flex;
        flex-wrap: wrap-reverse;
      }
      .example div {
        width: 50px;
        height: 50px;
      }
    </style>
  </head>
  <body>
    <h2>Flex-wrap property example</h2>
    <div class="example">
      <div style="background-color: #8ebf42;">A</div>
      <div style="background-color: #1c87c9;">B</div>
      <div style="background-color: #cccccc;">C</div>
      <div style="background-color: #666666;">D</div>
      <div style="background-color: #4c4a4a;">E</div>
      <div style="background-color: #c6c4c4;">F</div>
    </div>
  </body>
</html>

Valori

ValoreDescrizioneProva
nowrapDefinisce che i flex item non andranno a capo. Questo è il valore predefinito della proprietà.Prova »
wrapDefinisce che i flex item andranno a capo quando necessario.Prova »
wrap-reverseDefinisce che i flex item andranno a capo in ordine inverso quando necessario.Prova »
initialImposta la proprietà al suo valore predefinito.Prova »
inheritEredita la proprietà dall'elemento genitore.

Shorthand flex-flow

Poiché flex-wrap viene quasi sempre impostato insieme a flex-direction, CSS fornisce la shorthand flex-flow per entrambi contemporaneamente:

/* flex-direction  flex-wrap */
flex-flow: row wrap;

Questo equivale a scrivere flex-direction: row; e flex-wrap: wrap; separatamente.

Proprietà correlate

  • display — imposta display: flex sul genitore per creare il flex container su cui agisce flex-wrap.
  • flex-direction — imposta l'asse principale (riga o colonna) attorno al quale il wrapping ridispone gli elementi.
  • align-content — distribuisce lo spazio tra le righe in cui gli elementi sono andati a capo (rilevante solo quando gli elementi si dispongono su più righe).
  • justify-content — allinea gli elementi lungo l'asse principale.
  • flex — controlla come i singoli elementi crescono e si restringono per riempire ogni riga.

Esercitati

Pratica
Qual è lo scopo della proprietà 'flex-wrap' in CSS?
Qual è lo scopo della proprietà 'flex-wrap' in CSS?
Was this page helpful?