CSS: Float y overflow

27.abr 2006 Envía un trackback

Acostumbrando al cuerpo en el uso de CSS nos encontramos con pequeños problemas que intentamos resolver de la mejor manera -conocida-. En este caso el problema viene por el uso de la propiedad float.

Usando float

Habitualmente el uso de float se centra en partes del contenido (bloques de texto, imágenes, menús...) que pretendemos alinear a uno u otro lado dejando invariante el resto de la página (flotantes). El uso de esta propiedad es sencillo, solo tenemos que indicar si queremos que flote a la derecha, izquierda o simplemente que no flote:
	.divFlotante
	{
		float: left;
		float: right;
		float: none;
	}


Ejemplo

El problemaa asoma cuando juntamos varios float dentro de una misma página. Supongamos uno a cada lado formando una composición con menú y contenido, algo así:
<style>
	#Contenido {border: 2px solid black; background-color:#dedede;}
	#Izquierda {float: left; width:350px; border: 1px solid blue}
	#Derecha {float: right; width:150px;  border: 1px solid red}
</style>

<div id="Contenido">
	<div id="Derecha">
		<ul>
			<li>Opción1</li>
			<li>Opción2</li>
			<li>Opción3</li>
		</ul>
	</div>
	<div id="Izquierda">
		Lorem ipsum dolor sit amet, consectetuer...
	</div>
</div>
overflow001
Como vemos, las propiedades de #Contenido no se aplican correctamente por el uso de float en su interior. El borde de 2px en color negro debería contener nuestros 2 divs flotantes pero no lo hace. Este es un problema típico que podríamos resolver con algún que otro br o poniendo propiedades extrañas (min-height...). Y digo extrañas porque Internet Explorer no las reconoce.

Solución

La solución a este caso es sencilla, añadiendo un simple overflow:hidden a #Contenido conseguiremos el efecto deseado y podremos seguir con la maquetación de nuestro ejemplo:
<style>
	#Contenido {overflow:hidden; border: 2px solid black; background-color:#dedede;}
	#Izquierda {float: left; width:350px; border: 1px solid blue}
	#Derecha {float: right; width:150px;  border: 1px solid red}
</style>

<div id="Contenido">
	<div id="Derecha">
		<ul>
			<li>Opción1</li>
			<li>Opción2</li>
			<li>Opción3</li>
		</ul>
	</div>
	<div id="Izquierda">
		Lorem ipsum dolor sit amet, consectetuer...
	</div>
</div>
overflow002

En definitiva

Estos trucos son los que demuestran que para maquetación y diseño web, CSS es un gran aliado dejando a un lado las siempre tediosas y pesadas tablas. Por un mundo sin tablas.
float overflow

Comentarios
Gravatar luciano@11.11.2007, 'Re: CSS: Float y overflow'

Me fué muy util este tip. Gracias!

Gravatar Dennis Tobar@13.04.2008, 'Re: CSS: Float y overflow'

Se agradece un montón este artículo, ya que me ha iluminado con un problema de capas que he tenido con IE6 y los otros buenos navegadores que si cumplen con los estándares...

Saludos y muchas gracias :P

Gravatar andres@05.07.2008, 'Re: CSS: Float y overflow'

el overflow:hidden no siempre soluciona el problema, ya que lo que hace es forzar al contenido dentro del div contenedor. de esta forma, si "lo de adentro" no cabe, esta propiedad lo que hara es cortar el contenido para que se adapta al div padre, dejando partes de nuestra web sin poder ser vistas.

Gravatar ElAmigo@09.08.2008, 'Re: CSS: Float y overflow'

disculpenme masters, pero yo todavía no logro diseñar con divs hace meses q estoy probando y no lo logro, sin exagerar, meses, pero no importa si me dan la solucion les agradesco.
al poner los divs con float quedan sobre su contenedor lo q hace q no se expandan y al usar ancho y largo con porcentaje se pasan y no quiero arreglarlo con alambre y ponerlo con margen o etc tiene q haber una forma correcta de acomodar las cosas una al lado de la otra sin tanto problema
y si logran la solucion correcta por favor comentenlo en todos los blogs y foros q encuentren asi ayudarian a mucha gente, gracias.

Gravatar ElAmigo@09.08.2008, 'Re: CSS: Float y overflow'

Ah me olvidaba de otra cosa, al hacerlos flotantes no sirven más de contenedor ya q lo controles q quieran poner dentro, quedan debajo entonces no obedecen los padding etc, para mi un gran problema


Escribe tu comentario
 
 
Guardar datos
Escribe tu comentario:
captcha


Intenta que tu comentario sea interesante y con información relevante al tema de la entrada. BBCodes disponibles: [url=http://direccion]texto[/url], negrita: [b]texto[/b], itálica: [i]texto[/i], subrayada: [u]texto[/u]. Para mencionar o citar a alguien (quote): [cita]texto[/cita]