2011-01-05 7 views

Respuesta

240

overflow:auto; en el div que contiene hace que todo dentro de ella (incluso artículos flotaban) visible y los div exterior envuelve totalmente alrededor ellos. Ver this example.

+6

Sí, funciona un poco, pero tiene el peligro de generar barras de desplazamiento ... ¿no? – pedrozath

+1

No, no es que yo sepa de @pedro. El div externo debería seguir expandiéndose para envolver los divs internos. pruébalo en el violín, aumenta las dimensiones de los divs internos y observa qué sucede. – JakeParis

+1

¡Guau, eso fue increíble, gracias! @JMCCreative – Zhianc

11

Hay más de una forma de limpiar carrozas. Puede comprobar algunos aquí:
http://work.arounds.org/issue/3/clearing-floats/

Por ejemplo, clear:both podría funcionar para usted

#element:after { 
    content:""; 
    clear:both; 
    display:block; 
} 

#element { zoom:1; } 
+1

El beneficio de este enfoque es que 'overflow: auto;' recortará el contenido (como las decoraciones de enfoque) que se desborda fuera del elemento, pero no es así. – Dan

+0

overflow: auto creó una barra de desplazamiento horizontal para mí, así que no pude usarla. Esto funcionó perfectamente. –

11

En muchos casos, overflow: auto; será suficiente, pero para completar y para el soporte de navegador cruzado, eche un vistazo a Clearfix que hará el trabajo para todos los navegadores.

Vamos a considerar el siguiente marcado ..

<div class="clearfix"> 
    <div class="content">Content 1</div> 
    <div class="content">Content 2</div> 
</div> 

Junto con los siguientes estilos ..

.content { float:left; }

.clearfix { ..from link.. }

Sin la clearfix, el padre no tendría div una altura debido a que es niños flotantes. El clearfix hará que el padre considere los hijos flotantes.

+2

Clearfix es un marcado extra. Simplemente déle al padre div el marcado 'overflow: auto;' – JakeParis

6

Me di cuenta de que una buena manera de hacerlo es establecer display: table en el div.

Cuestiones relacionadas