2010-10-13 14 views
12

Quando provo ad eseguire il seguente:Floating immagine a sinistra cambia altezza del contenitore di div

​<div id="container"> 
    //This is a 200x200 image   
    <img src="http://dummyimage.com/200x200/CCC/000" /> 
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

con i CSS:

​#container { 
    background:#000; 
} 

ho un DIV con uno sfondo nero contenitore come voglio .

Tuttavia, quando aggiungo quanto segue alla CSS:

#container img { 
    float:left; 
} 

Sembra che il contenitore non rileva l'immagine al suo interno e la sua altezza è impostato al minimo (può essere visto qui: http://jsfiddle.net/wc4GJ/).

Come mai fluttuare l'immagine a sinistra incasina l'altezza del contenitore DIV?

Grazie,

Joel

risposta

26

Aggiungi overflow:auto; al #container

(Spiegazioni di seguito)

+0

Perché dovrebbe aggiungere un'immagine (con larghezza e altezza fisse) da considerare come overflow per il DIV? – Joel

+6

Poiché floating estrae l'elemento dal flusso, il che significa che l'elemento padre non contiene più alcun contenuto che ne determina l'altezza. Aggiunta di overflow: hidden/auto; al genitore assicura che esso avvolge correttamente i suoi contenuti. – PatrikAkerstrand

+0

Sono d'accordo con te ^^ – MatTheCat

0

è necessario aggiungere un div compensazione dopo l'IMG:

​<div id="container"> 
    //This is a 200x200 image   
    <img src="http://dummyimage.com/200x200/CCC/000" /> 
    <div class="clearing"></div> 
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

E in CSS:

.clearing { clear: both; } 
+0

Qual è la ragione di ciò? Non dovrebbe il contenitore DIV riconoscere un'immagine al suo interno, anche se è flottato a sinistra? – Joel

+0

Ha funzionato bene per incorporare i video di YouTube in un elenco di contenitori Polymer in cui l'overflow: auto non ha eseguito il lavoro (il video è stato espanso e i contenitori successivi nell'elenco sono stati espulsi, ma il contenitore di incorporamento non è stato espanso) – user2778525

Problemi correlati