Respuestas:
Agregue la siguiente propiedad:
.c{
...
overflow: hidden;
}
Esto obligará al contenedor a respetar la altura de todos los elementos dentro de él, independientemente de los elementos flotantes.
http://jsfiddle.net/gtdfY/3/
Recientemente, estaba trabajando en un proyecto que requería este truco, pero necesitaba permitir que se mostrara el desbordamiento, por lo que en su lugar, puede usar un pseudoelemento para limpiar sus flotadores, logrando efectivamente el mismo efecto mientras permite el desbordamiento en todos los elementos.
.c:after{
clear: both;
content: "";
display: block;
}
Estás flotando a los niños, lo que significa que "flotan" frente al contenedor. Para tomar la altura correcta, debe "despejar" el flotador
El div style = "clear: both" borra el flotante y le da la altura correcta al contenedor. consulte http://css.maxdesign.com.au/floatutorial/clear.htm para obtener más información sobre los flotadores.
p.ej.
<div class="c">
<div class="l">
</div>
<div class="m">
World
</div>
<div style="clear: both" />
</div>
La mejor y la solución más a prueba de balas es añadir ::before
y ::after
pseudoelements al contenedor. Entonces, si tiene, por ejemplo, una lista como:
<ul class="clearfix">
<li></li>
<li></li>
<li></li>
</ul>
Y todos los elementos de la lista tienen float:left
propiedades, entonces debes agregar a tu css:
.clearfix::after, .clearfix::before {
content: '';
clear: both;
display: table;
}
O puede probar la display:inline-block;
propiedad, entonces no necesita agregar ningún clearfix.