Columnas de igual altura con CSS

Recomienda este artículo Versión imprimible
Publicado por MijT el 3/Abr/2007 en CSS | 3605 Lecturas | 7 comentarios
Muchas veces al momento de diseñar o maquetear una web o un blog a dos columnas usando capas o divs lo que siempre deseamos es que exista una elgancia en nuestro diseño sobre todo cuando queremos usar colores diferentes para nuestras columnas como la que cotendrá el menú por ejemplo, entonces nos ponemos a diseñar y al probar lo que hemos realizado nos damos con la penosa sorpresa de que nuestro a diseño le falla algo, no me refiero a la sintaxis de nuestro código fuente, sino que cuando vemos como está estructurado nos encontraremos con que las columnas no tienen la misma altura y por tanto nuestro diseño se vería mal.

Para resolver estas cosas en internet podremos encontrar algunas soluciones en las cuales la mayoría usa javascript, pero la pregunta es ¿y si mi navegador tiene desactivado el javascript? gran problema, ¿entonces qué, me pongo a usar tablas?, no!, no hay que desesperarse ya que para ello existe CSS. Lo que voy a explicarles a continuación es como lograr que nuestros divs tengan la misma altura a medida de que el div que contiene la información de nuestro site aumente su altura haga que el div que contenga nuestro menú aumente en forma paralela a este.

Pasemos al código del CSS:

#container {
    background-color: #fff;
    overflow: hidden;
    width: 780px;
    margin: 10px auto 5px auto;
    border: 1px solid #000;
}
#content {
    background-color: #fff;
    width: 580px;
    border-right: 200px solid #0099FF; /* ancho y color del menú */
    margin-right: -200px;
    float: left;
}
#menu {
    width: 200px;
    float: left;
    color: #fff;
    background: #0099FF;
    text-align: left;
}


Ahora hagamos uso de este CSS en nuestro html:

<div id="container">
    <div id="content">
        <p>bla bla bla bla</p>
        <p>bla bla bla bla</p>
    </div>
    <div id="menu">
        bla bla bla bla
    </div>
</div>


Explicando a groso modo lo que hemos hecho es que darle al div #content además de un color específico un borde derecho de 200px y un margen derecho de -200px, esto para qué? pues para que cuando insertemos el div #menu este se sobreponga en él y el borde finja ser la columna lateral derecha de manera que al aumentar el tamaño del contenido lo lógico pues es que el borde aumentará paralelamente su altura con relación al contenido, lo cual nos servirá para insertar nuestro menú y se vean de igual altura. Pueden ver un ejemplo pulsando aquí

Sencillo verdad?, espero que esto pueda servirles de ayuda.
Etiquetas:
Compártelo:
Enviar a Del.icio.us Enviar a Technorati Enviar a Barrapunto Floréalo Enviar a Menéame Enviar a Facebook Enviar a Google Bookmarks Enviar a Yahoo! Enviar a Bitacoras Enviar a Webéame Enviar a Digg Enviar a Fresqui Enviar a Furl Enviar a NeoDiario Enviar a Wikio

Artículos Relacionados

No hay post relacionados
7 Comentarios a: Columnas de igual altura con CSS
Antoniodya comentó:
El 29 de Jul. del 2007 a las 03:37
¡Oh! my buen trabajo. Enseguida lo pruebo. Gracias.

Saludos
Antonio
antoniodya.blogspot.com/

Pili comentó:
El 8 de Ene. del 2009 a las 15:53
Buénisimo, pero tengo una duda, qué sucede cuando los divs van al revés?
Cuando el menu está a la izquierda y el contenido a la derecha? En mi caso tengo una web con el contenido variable a la derecha, y si hago tu sugerencia, el div del contenido tapa con el color al del menú.

Me puedes ayudar? Gracias!


MijT comentó:
El 8 de Ene. del 2009 a las 16:31
@Pili: Para ese caso tendrías que modificar algunas propiedades CSS de los DIV content y menu, de esta manera:

#content {
    background-color: #fff;
    width: 580px;
    border-left: 200px solid #0099FF; /* ancho y color del menú */
    margin-left: -200px;
    float: right;
}
#menu {
    width: 200px;
    float: right;
    color: #fff;
    background: #0099FF;
    text-align: left;
}


Como podrás notar, en el DIV content he cambiado las propiedades border-right y margin-right por border-left y margin-left respectivamente y el valor de la propiedad float lo he cambiado de left a right, y en el DIV menu sólo cambié el valor de la propiedad float de left por right.

Puedes ver el resultado aquí

Espero que te sirva de ayuda.

Saludos.

kodkod comentó:
El 15 de Abr. del 2009 a las 10:26
como se puede expandir al 100% la columna sobrepuesta lo intente pero no se expande

kodkod comentó:
El 15 de Abr. del 2009 a las 10:28
como se puede expandir al 100% la columna sobrepuesta lo intente pero no se expande
me refiero a la altura como para colocar una imagen con backgrond-image...

saludos

GoldenParadise comentó:
El 13 de Dic. del 2009 a las 18:04
Muy creativa tu solución.
Lo malo es que si la columna del menu tiene una imagen de fondo no funciona :[ :(

quevedod86 comentó:
El 18 de Dic. del 2009 a las 15:40
Muy bueno sobre todo porque funciona en distintos navegadores y no hay que fijar un tamaño a los div's para que no se "descuadren".
gracias por la solucion.

Comenta este artículo

Nos encantaría que dejaras tu comentario acerca de esta entrada, pero para ello debes tener en cuenta lo siguiente:

  • No escribas todo el texto en mayúsculas.
  • Procura que tus comentarios estén relacionados con lo que se ha publicado en esta entrada.
  • Respeta a los demás lectores de este blog. Si hay algún comentario que no es de tu agrado, expón tus ideas de forma alturada.
  • No utilices groserías en tus comentarios.

Los comentarios que incumplan los puntos mencionados serán eliminados inmediatamente.

Para escribir tu comentario dispones de un editor de texto para agregar negrita, cursiva, subrayado, links, etc. Si no sabes cómo usarlo, entra aquí