Blog Agencia Web

Altura minima (min-height) de bloques a traves de CSS

icon timeRicardo Aroca | 01 de agosto de 2005 | icon comment16 comentarios

Un problema muy común cuando se trabaja con bloques div, es el de especficar una altura mínima para ellos. Esta situación se da generalmente cuando se tiene una imagen que flota junto a un texto que lo acompaña; si el texto no tiene la altura de la imagen, el contenido de la página que esté bajo el texto, también se mostrará a la derecha de la imagen, debido a que el div que los contiene toma la altura del texto.

Bloque sin Min-height

La solución es especificar una altura mínima para un cuadro (div) que contenga a la imagen y el texto.

Bloque con min-height

Código XHTML

<div class="box">
  <img src="img-ejemplo.gif" width="100" height="125" />
  <p>Colocar aquí el contenido para class "box"</p>
</div>

Un div sirve como contenedor de una imagen y un párrafo de texto. No puede ser más simple.

Código CSS

.box{
  min-height: 125px;
  height: auto !important;
  height: 125px;

  padding:5px;
}

.box img{
  float:left;
}
.box p{
  margin-left:135px;
}

Las líneas destacadas son las que establecen la altura mínima al contenedor. La propiedad min-height, establece una altura mínima para un elemento; esta propiedad no funciona en Internet Exploreres, ya que en realidad entiende el atributo hight como un min-height, por lo tanto establecemos height: 125px. Para que los navegadores que si entienden correctamente los atributos height y min-height, como Firefox, no tengan una altura fija (ya que hemos establecido que la altura es 125px), ocupamos height: auto !important, estableciendo una altura automática y dándole mayor prioridad a esta declaración sobre la otra a través de la declaración !important (que no es entendida por Internet Explorer).

Comentarios

gravatar

1 El 16 de agosto de 2005 K3NNY escribió

Me parece que para solucionar el problema del float es ams facil colocar un div abajo del float y aplicarle un "clear:both" (o "left", o "right" segun el float). El div no tiene porque verse, puede contener un simple espacio y ocultarlo con un "hidden".

gravatar

2 El 23 de agosto de 2005 el Autor escribió

es una buena opción ... creo que es complementaria. Sin embargo, es poco elegante desde el punto de vista de la semantica, pues estás insertando un elemento que no tiene significado. Esta solucion es muy util en los casos en que se se repite el elemento con la altura minima, por ejemplo, en una lista de productos o una galería de fotos; en esos casos es poco práctico insertar divs con "clear".

gravatar

3 El 12 de diciembre de 2005 croma2 escribió

En el caso de que no dispongamos directamente de etiquetas simples tipo "p" para el DIV contenedor sino que estén dentro de otras etiquetas DIV (porque tenemos una organización compleja) ya no funciona... ¿...? En cambio sí funciona el sistema del DIV con clear:both El problema se da en Firefox-Opera pero no en IE... por una vez ;) Particularmente este del control de las alturas de los DIV es uno de los problemas que más quebradros de cabeza me da...

gravatar

4 El 12 de diciembre de 2005 el Autor escribió

Creo que ha habido una confusión de problemas. El tema que quise plantear es el de establecer una altura mínima para un bloque, y de pasada se toca una forma de adaptar un contenedor al contenido. Tienes razón, IE no tiene problemas con la altura porque adecúa la altura del contenedor automáticamente al contenido. Es un error de implementación de IE, que sin embargo facilita la vida a los diseñadores. Con respecto a que la técnica no funciona en diseños mas complejos, tengo mis dudas. Creo que tendríamos que revisar el diseño complejo que comentas, para ver por que no se da el resultado esperado. Y sí, la altura en CSS es uno de los problemas que más dolores de cabeza da. Pero si queremos extender bloques (no importando la altura mínima ni la estandarizacion de alturas)insisto en que la opción del clear:both escrito directamente en la página, no es semanticamente correcta. Existe una solución, que utilizo extensamente en este sitio, que utiliza la psudoclase :after y que voy a desarrollar en mi próximo artículo.

gravatar

5 El 19 de abril de 2006 Alicia escribió

Quisiera saber si las propiedades min-height y max-height son interpretadas también por Mozilla Firefox desde la 1.0, Netscape desde la v7.0 y Opera desde la versión 6.0. gRacias

gravatar

6 El 19 de abril de 2006 el Autor escribió

Creo que esta tabla puede ayudarte http://www.blooberry.com/indexdot/css/supportkey/dimension.htm. La tabla dice que la propiedad es soportada desde Netscape 6 y Opera 4. Además en todas las versiones de Firefox que he utilizado, la propiedad es soportada.

gravatar

7 El 06 de enero de 2007 Guillermo escribió

overflow: hidden;
height: 1% o width: algo;

soluciona el problema en forma todavia mas elegante.

gravatar

8 El 10 de julio de 2007 jeannette escribió

eso del overflow: hidden; me soluciono el problema sobre todo pq mi pagina tiene contenido dinamico y las alturas de las imagenes son variables

gravatar

9 El 15 de agosto de 2007 Cesc escribió

No se si he entendido bien el problema pero diria q con un br clear bastaria

gravatar

10 El 02 de octubre de 2007 jp escribió

la respuesta del articulo jamas me resulto... el overflow, si

gravatar

11 El 02 de octubre de 2007 jp escribió

overflow: hidden .... estupendo... lo lograste

gravatar

12 El 10 de mayo de 2008 jd escribió

Muchas gracias por el aporte, tenia tiempo de tratar de resolver ese problema.

gravatar

13 El 15 de mayo de 2009 Luciano escribió

No soy experto en CSS, se cosas sueltas, y justamente tenia problemas con este tema para ubicar un bloque de adsense que flota a la izquierda de un parrafo, y el div , que tiene un marco, quedaba pequeño cuando tenia poco texto, y se solapaba con el bloque de adsense, similar al de la imagen del ejemplo de esta página

Pero, que bueno que es encontrar este tipo de paginas !!!! , aunque el autor propuso una solucion, y luego postearon una forma mas fácil ( la del overflow), todo los meritos para el autor del articulo, y obviamnete al que respondio con la otra forma.

Gracias muchachos sinceramente, hacia casi 2 horas que me estaba rompiendo la cabeza tratando de solucionar esto

un abrazo.

gravatar

14 El 10 de julio de 2009 El_flacko escribió

Muchas gracias por el codigo. funciona de maravilla en Mozila Firefox

gravatar

15 El 02 de noviembre de 2010 Alfonso Galán escribió

Hola, tengo un problema y ojalá puedas ayudarme.
Tengo un diseño al que al contenedor principal le puse un min-height.

Entre otros divs, incluí dentro del div principal uno donde se despliegan el contenido principal y que contiene a su vez dos divs, el del texto y el de la imagen principal de la sección. Tanto el div del texto y el div del contenido tienen también un min-height.

La cosa es que cuando el texto es más lago que el espacio disponible, los min-heights de los divs texto y contenido funcionan a la perfección, pero el div del contenedor principal se queda estático. ¿Qué puedo hacer?

La cosa es que el min-height

gravatar

16 El 11 de mayo de 2011 Flor escribió

A mi no me funciona de ninguna manera:

css

/* CUERPO */
#cuerpo{
width:963px;
min-height: 125px;
height: auto !important;
height: 125px;
background:#FFF;
padding:20px 20px 20px 20px;
float:inherit;
}
/* end - CUERPO */

html




(acá van todos los divs con los contenidos)




También en div "cuerpo" lo tengo dentro del div "content" cuyo height es de 100%

No se como hacer que el height se adapte al largo del contenido automáticamente.

Opciones

Categorias

Suscribirse

Reciba automáticamente en su lector RSS las últimas publicaciones del blog.

Publicidad

Contrata Planes Hostagator haciendo Clic Aquí

Agencia Web utiliza Hostgator para todos sus proyectos. Si quieres saber por qué, haz clic aquí.

Síguenos

Servicios