Risposte:
Aggiungi la seguente proprietà:
.c{
...
overflow: hidden;
}
Ciò costringerà il contenitore a rispettare l'altezza di tutti gli elementi al suo interno, indipendentemente dagli elementi flottanti.
http://jsfiddle.net/gtdfY/3/
Recentemente, stavo lavorando a un progetto che richiedeva questo trucco, ma doveva consentire la visualizzazione dell'overflow, quindi invece puoi usare uno pseudo-elemento per cancellare i tuoi float, ottenendo efficacemente lo stesso effetto consentendo l'overflow su tutti gli elementi.
.c:after{
clear: both;
content: "";
display: block;
}
Stai facendo galleggiare i bambini, il che significa che "galleggiano" davanti al contenitore. Per prendere l'altezza corretta, è necessario "liberare" il galleggiante
Il div style = "clear: both" cancella il floating e dà l'altezza corretta al contenitore. vedere http://css.maxdesign.com.au/floatutorial/clear.htm per maggiori informazioni sui float.
per esempio.
<div class="c">
<div class="l">
</div>
<div class="m">
World
</div>
<div style="clear: both" />
</div>
Prova a inserire questo div di cancellazione prima dell'ultimo </div>
<div style="clear: both; line-height: 0;"> </div>
La soluzione migliore e più a prova di proiettile è aggiungere ::before
e ::after
pseudoelementi al contenitore. Quindi se hai ad esempio un elenco come:
<ul class="clearfix">
<li></li>
<li></li>
<li></li>
</ul>
E ogni elemento nell'elenco ha float:left
proprietà, quindi dovresti aggiungere al tuo css:
.clearfix::after, .clearfix::before {
content: '';
clear: both;
display: table;
}
Oppure puoi provare la display:inline-block;
proprietà, quindi non è necessario aggiungere alcun clearfix.