Flusso CSS

La casella fluttuante può muoversi a sinistra o a destra fino a quando il margine esterno non tocca il margine della casella contenitrice o di un'altra casella fluttuante.

Poiché la casella fluttuante non si trova nel flusso normale del documento, le caselle bloccate nel flusso normale del documento si comportano come se la casella fluttuante non esistesse.

Flusso CSS

Vediamo l'immagine seguente, quando la casella 1 fluttua verso destra, si stacca dal flusso del documento e si muove verso destra fino a quando il margine destro della casella tocca il margine destro della casella contenitrice:

Esempio di flusso CSS - Elemento flottante a destra

Vediamo ancora l'immagine seguente, quando la casella 1 fluttua verso sinistra, si stacca dal flusso del documento e si muove verso sinistra fino a quando il margine sinistro della casella tocca il margine sinistro della casella contenitrice. Poiché non si trova più nel flusso del documento, non occupa spazio e di fatto copre la casella 2, facendo sì che questa scompaia dalla vista.

Se si sposta verso sinistra tutte e tre le caselle, la casella 1 fluttuerà verso sinistra fino a toccare la casella contenitrice, mentre le altre due caselle fluttueranno verso sinistra fino a toccare la casella fluttuante precedente.

Esempio di flusso CSS - Elemento flottante a sinistra

Come mostrato nell'immagine seguente, se la casella contenitrice è troppo stretta per accogliere tre elementi fluttuanti disposti orizzontalmente, altri elementi fluttuanti si muoveranno verso il basso fino a quando non ci sarà spazio sufficiente. Se l'altezza degli elementi fluttuanti è diversa, potrebbero essere bloccati da altri elementi fluttuanti mentre si muovono verso il basso:

Esempio di flusso CSS 2 - Elemento flottante a sinistra

Attributo float CSS

Nel CSS, realizziamo il floating degli elementi attraverso la proprietà float.

Per ulteriori informazioni sulla proprietà float, visitare il manuale di riferimento:Attributo float CSS

Casella riga e pulizia

La casella riga accanto alla casella fluttuante viene accorciata, lasciando spazio alla casella fluttuante e facendo in modo che la casella riga circonda la casella fluttuante.

Di conseguenza, creare una casella fluttuante consente di far circondare il testo dall'immagine:

Riga di testo intorno al riquadro flottante

Per fermare il flusso delle righe intorno alla casella fluttuante, è necessario applicare a questa casella Attributo clear. Il valore dell'attributo clear può essere left, right, both o none, che rappresenta quali lati del riquadro non dovrebbero toccare il riquadro fluttuante.

Per ottenere questo effetto, nel margine superiore dell'elemento da pulireMargine superioreAggiungi sufficiente spazio in modo che il margine superiore dell'elemento scenda verticalmente sotto il riquadro fluttuante:

Esempio di attributo clear - Applicazione clear alla riga di testo

Questo è uno strumento utile che fa spazio intorno agli elementi fluttuanti.

Facciamo un'analisi più dettagliata della fluttuazione e della pulizia. Supponiamo di voler far fluttuare un'immagine a sinistra di un blocco di testo e di voler far sì che l'immagine e il testo siano contenuti in un altro elemento con sfondo di colore e bordo. Potresti scrivere il seguente codice:

.news {
  background-color: gray;
  border: solid 1px black;
  }
.news img {
  float: left;
  }
.news p {
  float: right;
  }
<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

In questo caso, si verifica un problema. Poiché l'elemento fluttuante si allontana dal flusso del documento, il div che avvolge l'immagine e il testo non occupa spazio.

Come far sì che l'elemento avvolgente circonda visivamente l'elemento fluttuante? È necessario applicare clear in qualche punto dell'elemento:

Esempio di attributo clear - Pulizia di elementi vuoti

Sfortunatamente, si è verificato un nuovo problema, poiché non ci sono elementi esistenti che possano applicare la pulizia, quindi possiamo aggiungere un elemento vuoto e pulirlo.

.news {
  background-color: gray;
  border: solid 1px black;
  }
.news img {
  float: left;
  }
.news p {
  float: right;
  }
.clear {
  clear: both;
  }
<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
<div class="clear"></div>
</div>

Questo ci darà l'effetto desiderato, ma è necessario aggiungere codice extra. Spesso ci sono elementi che possono applicare clear, ma a volte è necessario aggiungere tag inutili per il layout.

Ma abbiamo un altro metodo, ovvero fare fluttuare il div del contenitore:

.news {
  background-color: gray;
  border: solid 1px black;
  float: left;
  }
.news img {
  float: left;
  }
.news p {
  float: right;
  }
<div class="news">
<img src="news-pic.jpg" />
<p>some text</p>
</div>

Questo ci darà l'effetto desiderato. Sfortunatamente, l'elemento successivo sarà influenzato da questo elemento fluttuante. Per risolvere questo problema, alcune persone scelgono di fare fluttuare tutto il layout e poi pulire questi fluttuanti con elementi appropriati e significativi (spesso il piè di pagina del sito) per ridurre o eliminare i tag inutili.

In effetti, tutte le pagine del sito CodeW3C.com utilizzano questa tecnica. Se apri il file CSS che utilizziamo, vedrai che abbiamo pulito il div del piè di pagina e che i tre div sopra il piè di pagina si muovono a sinistra.

Attributo clear CSS

Abbiamo appena discusso in dettaglio il principio di funzionamento della pulizia CSS e l'applicazione dell'attributo clear. Se desideri imparare di più sull'attributo clear, visita il manuale di riferimento:Attributo clear CSS

Esempio di flusso e pulizia

Applicazione semplice dell'attributo float
Fare flottare l'immagine a destra di un paragrafo
Fare flottare l'immagine con bordi e margini a destra del paragrafo
Fare flottare l'immagine a destra del paragrafo. Aggiungere bordi e margini all'immagine.
Immagine con titolo fluttante a destra
Fare flottare l'immagine con il titolo a destra
Fare flottare la prima lettera del paragrafo a sinistra
Fare flottare la prima lettera del paragrafo a sinistra e aggiungere stili a questa lettera.
Creare un menu orizzontale
Creare un menu orizzontale utilizzando il flusso浮动 con collegamenti a una colonna.
Creare una pagina iniziale senza tabella
Creare una pagina iniziale con intestazione, piè di pagina, elenco laterale e contenuto principale utilizzando il flusso浮动.
Cancellazione dell'elemento laterale
Questo esempio dimostra come utilizzare elementi di cancellazione per i flussi laterali.