CSS: Float y overflow - Userlinux.net

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,…

CSS: Float y overflow

r0sk 27.Apr.2006 8 Comentarios 4040 Lecturas
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.
Categorías: programación

Comentarios


gravatar
luciano
11.Nov.2007
Me fué muy util este tip. Gracias!

gravatar
Dennis Tobar
13.Apr.2008
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.Jul.2008
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.Aug.2008
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.Aug.2008
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

gravatar
Daniel
13.Dec.2009
Todo bien con los divs y de hecho los uso todo el tiempo, pero no nos engañemos y dejemonos de tanta careteada: es muchisimo mas sencillo maquetar con tablas que andar lidiando con la forma en que interpreta cada navegador el código css, lo que con tablas te puede llevar unos minutos con css te lleva horas

gravatar
08.Feb.2010
A Daniel, es solo cuestión de un poko de práctica al inicio, como dijiste Horas, pero luego no te lleva minutos, te lleva segundos maquetarlo con CSS, yo tengo el problema que IE6 no reconoce la propiedad FLOAT y no encuentro como solucionarlo, si alguien sabe como ayuda...

gravatar
Arturo
18.Aug.2010
Hola Oscar, muchas gracias por tu ayuda, me sirvió perfecto y nunca voy a olvidarlo, es muy útil.

Una consulta, yo soy un programador, un persona muy lógica. ¿Donde esta la lógica en, si algo esta flotando dentro de un contenedor, usar "overflow: hidden;" para que lo que flota igual ocupe un espacio y desplace a lo que esta abajo? Si supuestamente "overflow: hidden;" deberia simplemente cortar el contenido interno para que no se vea lo que no alcanza en el contenedor. ¿Hay alguna lógica que no veo, o es simplemente un truco, un bug, un hueco del css que sirve mucho?

Escribe un comentario

Nick
Email
URL

Buscar

Cargando...

Categorías

Últimos comentarios

  • BartlettLilly20
  • r0sk
  • coder
  • argordmel
  • uveic
  • MarcosBL
  • quemada
  • alexander
  • Hakky111
  • tramel
  • hoyadas
  • hoyadas
  • hoyadas
  • Anubys
  • Arturo

Tagcloud

lugo freebsd seguridad futbol iphone mysql champions userlinux alemania_2006 copa bsd cakephp rfilms deportes meme blogs conciertos bake debian macosx apple humor programación música games 2008 beers tip lucux cake sysadmin ssh ibook films cumpleaños bash league barça soccer mundial frases opinion felicidades hack php juegos cms personal 2007 ubuntu ds mac sidenotes openbsd linux blogsfera rsidenotes blog nintendo san_froilan

Archivo

Social

Twitter

Enlaces

Enlaces de interés