2015-02-27 7 views
21

Ho il mio primo, secondo e terzo elemento e poi voglio che il quarto elemento passi alla riga successiva, indipendentemente da quanto ampio è lo spazio.Come interrompere la linea in un layout flessibile?

.box { 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
    justify-content: space-around; 
 
    align-items: flex-start; 
 
} 
 
.it { 
 
    max-width: 420px; 
 
}
<div class="box"> 
 
    <div class="it">1</div> 
 
    <div class="it">2</div> 
 
    <div class="it">3</div> 
 
    <div class="it">4</div> 
 
</div>

+3

Si prega di aggiungere il codice. –

risposta

28

è possibile inserire una pseudo-elemento largo alla giusta posizione:

.flex-container { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
} 
 
.flex-container::after { 
 
    content: ''; 
 
    width: 100%; 
 
} 
 
.flex-item:last-child { /* or `:nth-child(n + 4)` */ 
 
    order: 1; 
 
}
<div class="flex-container"> 
 
    <div class="flex-item">1</div> 
 
    <div class="flex-item">2</div> 
 
    <div class="flex-item">3</div> 
 
    <div class="flex-item">4</div> 
 
</div>

+0

Grazie funziona quasi. L'unico problema è che se c'è un quinto elemento, il 4 ° elemento va alla riga successiva, ma il quinto elemento rimane nella prima riga. – kptlronyttcna

+0

@kptlronyttcna Quindi usa ': nth-child (n + 4)' invece di ': last-child'. – Oriol

+2

@kptlronyttcna Usando pseudo-elementi, puoi inserire il contenuto solo in due posti diversi (':: before' e' :: after'), quindi non puoi avere più di due interruzioni di riga forzate. Tuttavia, puoi modificare il layout HTML e aggiungere elementi fittizi nei posti giusti, quanti ne desideri. – Oriol