La mejor explicación para crear columnas de alto variable con CSS

Enviado por clbustos el Lun, 28/07/2008 - 12:45.

Uno de los grandes misterios de la humanidad es como crear una estructura de dos o más columnas de alto variable, usando sólo CSS. En más de una ocasión he tenido que reinventar la rueda, pero gracias a BarelyFitz Design y su artículo Learn CSS Positioning in Ten Steps', ¡he visto la luz!

La idea, muy sencilla, es la siguiente

  • Utilizar un div contenedor con position:relative
  • Cada columna se define con un ancho definido (que puede ser un porcentaje, para que sea fluido) y con float:left
  • Como último elemento dentro del div contenedor, creamos un div con clear:both

Eso sería todo! Veamos como se ve :)

Código fuente:

  1.  <div style='position:relative;width:50%;background:purple;color:white'>
  2.  Este es el contenedor
  3.  <div style='width:20%;float:left;background:#bbb;'>Col 1<br />Col 1<br />Col 1</div>
  4.  <div style='width:20%;float:left;background:#ccc;'>Col 2</div>
  5.  <div style='clear:both;background:#333;color:white'>Pie</div>
  6.  </div>

Demo:

Este es el contenedor
Col 1
Col 1
Col 1
Col 2
Pie
Imagen de acido69

te recomiendo que al DIV contenedor le pongas un nombre de clase: ejemplo "tr"
tu css:
.tr { display: inline-block; }
.tr:after, .container:after{
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
* html .tr { height: 1% }
.tr { display: block }

Y listo; arreglado. Lo malo de usar "clear:both" es que te deja un espacio por debajo.
más info: http://code.google.com/p/fcss/source/browse/trunk/?r=2

Enviado por acido69 (no verificado) el Lun, 28/07/2008 - 18:37.
Imagen de clbustos

Muchas gracias!
Me queda la duda: ¿Por qué poner una nueva definición de .tr tras la inicial?

Enviado por clbustos el Lun, 28/07/2008 - 18:52.
Imagen de Perejilillo desconocido

Hola,

Está muy bien pero si la columna de la derecha, por ejemplo, crece más que la de la izquierda, queda un feo hueco debajo de la columna de la izquierda, ¿sabrías como hacer para que las dos columnas sean igual de altas?

Saludos.

Enviado por Perejilillo desconocido (no verificado) el Mar, 29/07/2008 - 01:50.
Imagen de acido69

después de la primera; viene las sentencias para los render de Geko(firefox, ...), porque son lo únicos que implementan ":after"
la siguiente y última son para el amigo IE; que yo la verdad no sé muy bien porque funciona con eso; porque si le cambias el orden deja de funcionar.
cosas de la programación esotérica para IE

Enviado por acido69 (no verificado) el Mar, 29/07/2008 - 05:36.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato