La altura de un elemento está determinado por sus elementos secundarios (a menos que se establece explícitamente). P. ej .:
+------A------+
|+-----------+|
|| B ||
|+-----------+|
|+-----------+|
|| C ||
|+-----------+|
+-------------+
La altura de A está determinada por el lugar donde se encuentra el borde inferior de su hijo C.
Ahora, elementos flotantes no cuentan para la altura de sus padres, que están sacados del flujo regular:
+------A------+
+--+---------++
| B |
+---------+
+---------+
| C |
+---------+
El elemento A se contrae a una altura mínima, ya que sus dos hijos son flotado.
elementos de evacuación se introducen para restaurar la altura correcta:
+------A------+
| +---------+|
| | B ||
| +---------+|
| +---------+|
| | C ||
| +---------+|
|+-----D-----+|
+-------------+
El elemento D es un elemento cero altura con el atributo clear
establecido. Eso hace que caiga por debajo de los elementos flotados (los borra ellos). Eso hace que A tenga un elemento hijo normal para calcular su altura por. Ese es el caso de uso más típico al menos.
La solución a menudo mejor para introducir elementos HTML adicionales es establecer A en overflow: hidden
. Eso tiene el efecto de forzar un cálculo de altura, que tiene el mismo efecto de aumentar la altura al tamaño deseado. Sin embargo, esta solución puede tener o no otros efectos secundarios.
Más sobre esto vaya a este http://www.w3.org/TR/CSS2/visuren.html#float-position –