Tengo estos divs anidados y necesito que el contenedor principal se expanda (en altura) para acomodar los DIV dentro
<!-- head -->
...
<!-- /head -->
<body class="main">
<div id="container">
<div id="header">
<!--series of divs in here, graphic banner etc. -->
</div>
<div id="main_content"> <!-- this DIV _should_ stretch to accommodate inner divs -->
<div id="items_list" class="items_list ui-sortable">
<div id="item_35" class="item_details">
</div>
<div id="item_36" class="item_details">
</div>
<div id="item_37" class="item_details">
</div>
<!-- this list of DIVs "item_xx" goes on for a while
each one representing a photo with name, caption etcetc -->
</div>
</div>
<br class="clear"/>
<div id="footer">
</div>
</body>
</html>
CSS es esto:
* {
padding: 0;
margin: 0;
}
.main {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: #4c5462;
margin: 0;
padding: 0;
text-align: center;
color: #000000;
}
.main #container {
height: auto;
width: 46em;
background: #4c5462;
margin: 0 auto;
border: 0px solid #000000;
text-align: left;
}
.main #main_content {
padding: 5px;
margin: 0px;
}
#items_list {
width: 400px;
float: left;
}
.items_list {
width: 400px;
float: left;
}
.item_details {
margin-top: 3px;
margin-bottom: 3px;
padding: 3px;
float: left;
border-bottom: 0.5px solid blue;
}
El problema que tengo es que #main_content
no se estira para acomodar todos los divs internos, con el resultado de que continúan en el fondo.
¿Cómo puedo resolver este problema teniendo en cuenta el escenario anterior?
<strong>Edited</strong>$Reason_for_revising_question...
Es posible que deba cambiar el título de la pregunta para reflejar los cambios si hay un cambio importante o una adición en su enfoque. =)div
etiqueta conid='container'
. Eso podría causar algunos problemas..clear
clase. ¿Lo olvidó o está en su código original? La.clear
clase sobre esobr
es muy importante como @jennyfofenny menciona en su respuesta.Respuestas:
Necesita forzar a
clear:both
antes de que#main_content
se cierre el div. Probablemente movería<br class="clear" />;
al#main_content
div y establecería el CSS para que sea:Actualización: esta pregunta aún recibe una buena cantidad de tráfico, por lo que quería actualizar la respuesta con una alternativa moderna utilizando un nuevo modo de diseño en CSS3 llamado cajas flexibles o Flexbox :
La mayoría de los navegadores modernos actualmente admiten unidades Flexbox y viewport , pero si tiene que mantener la compatibilidad con navegadores más antiguos, asegúrese de verificar la compatibilidad para la versión específica del navegador.
fuente
Prueba esto:
overflow: auto;
Funcionó para mi problema ...
fuente
display: block;
con élagregue lo siguiente:
a su div principal. Elimina la necesidad de un extra
<br />
para el claro.fuente
Como alternativa, también puede probar esto que puede ser útil en algunas situaciones
jsFiddle
fuente
Yo solo usaría
en tu div. Sí, sé que llego un poco tarde, pero pensé que esto podría ayudar a alguien como si me hubiera ayudado si estuviera aquí.
fuente
height: auto;
hace que todos los elementos a continuación se muevan a la parte superior. Con esta propiedad en mi div de contenido principal, el pie de página de mi página se mueve hacia arriba para que toque el encabezado y se superponga a mi div de contenido.Lo siguiente debería funcionar:
fuente
Manera muy simple
En padres DIV:
height: 100%;
Este trabajo para mí siempre
fuente
Use la etiqueta span con
display:inline-block
css adjunta. Luego puede usar CSS y manipularlo como un div de muchas maneras, pero si no incluye unwidth
oheight
se expande y se retrae en función de su contenido.Espero que ayude.
fuente
div
(en lugar de aspan
) perodisplay: inline-block
aún funcionó en mi caso (Chromium).Por lo general, creo que esto se puede resolver forzando una
clear:both
regla sobre el último elemento secundario de#items_list
.Puedes usar:
O, si está utilizando un lenguaje dinámico, agregue una clase adicional al último elemento generado en cualquier ciclo que cree la lista en sí, para que termine con algo en su html como:
y css
fuente
Este problema surge cuando los elementos Child de un Div Parent se hacen flotar. Aquí está la última solución del problema:
En su archivo CSS escriba la siguiente clase llamada .clearfix junto con el pseudo selector : después
Luego, en su HTML, agregue la clase .clearfix a su Div principal. Por ejemplo:
Debería funcionar siempre. Puede llamar al nombre de la clase como .group en lugar de .clearfix , ya que hará que el código sea más semántico. Tenga en cuenta que no es necesario agregar el punto o incluso un espacio en el valor de Contenido entre la comilla doble "". Además, desbordamiento: auto;puede resolver el problema pero causa otros problemas como mostrar la barra de desplazamiento y no se recomienda.
Fuente: Blog de Lisa Catalano y Chris Coyier
fuente
agregue una propiedad flotante al
#main_content
div; luego se expandirá para contener su contenido flotantefuente
Antes de hacer nada, verifique las reglas de CSS con:
Eliminar si existe y no los necesita.
fuente
Los elementos flotantes no ocupan el espacio dentro del elemento padre, como su nombre indica, ¡flotan! Por lo tanto, si no se proporciona explícitamente una altura a un elemento que tiene sus elementos secundarios flotantes, entonces el elemento principal parecerá encogerse y parecerá que no acepta las dimensiones del elemento secundario, también si se le da a
overflow:hidden;
sus elementos secundarios que no aparecen en la pantalla. Hay varias formas de lidiar con este problema:Inserte otro elemento debajo del elemento flotante con
clear:both;
la propiedad o el usoclear:both;
en:after
el elemento flotante.Usar
display:inline-block;
o enflex-box
lugar defloat
.fuente
Parece que esto funciona
Toma el tamaño de la pantalla como mínimo, y si el contenido se expande, crece.
fuente
En CSS:
#clear_div{clear:both;}
Después de la etiqueta div del div interno, agregue este nuevo div siguiente
http://www.w3schools.com/cssref/pr_class_clear.asp : para más información
fuente
Agregué Bootstrap a un proyecto con
section
etiquetas que había establecido al 100% de la altura de la pantalla. Funcionó bien hasta que hice el proyecto de respuesta, y en ese momento me prestó parte de jennyfofenny 's respuesta así que mi sección de antecedentes igualada fondo del contenido cuando el tamaño de la pantalla cambia en pantallas más pequeñas.Mi nuevo
section
CSS se ve así:Digamos que tienes una sección de cierto color. Mediante el uso
min-height
, si el ancho de la sección se reduce debido a una pantalla más pequeña, la altura de la sección se expandirá, el contenido permanecerá dentro de la sección y su fondo seguirá siendo el color deseado.fuente
¿Has probado la forma tradicional? dar la altura del contenedor principal: auto
He usado esto y funcionó la mayoría de las veces conmigo.
fuente
Me encuentro con esto en un proyecto yo mismo: tenía una mesa dentro de un div que se derramaba desde el fondo del div. Ninguna de las correcciones de altura que probé funcionó, pero encontré una solución extraña para eso, y eso es poner un párrafo en la parte inferior del div con solo un punto. Luego, diseñe el "color" del texto para que sea el mismo que el fondo del contenedor. Funcionó ordenadamente a su antojo y no requiere JavaScript Un espacio sin interrupciones no funcionará, ni una imagen transparente.
Aparentemente, solo necesitaba ver que hay algo de contenido debajo de la tabla para estirarlo y contenerlo. Me pregunto si esto funcionará para alguien más.
Este es el tipo de cosas que hace que los diseñadores recurran a diseños basados en tablas: la cantidad de tiempo que he pasado resolviendo esto y haciendo que sea compatible con varios navegadores me está volviendo loco.
fuente
Intenté esto y funcionó
fuente
Si está utilizando jQuery UI, ya tienen una clase que funciona solo un encanto, agregue un
<div>
en la parte inferior dentro del div con el que desea expandir,height:auto;
luego agregue un nombre de clase ui-helper-clearfix o use este atributo de estilo y agregue como a continuación :agregue la clase jQuery UI al clear div, no el div que desea expandir.
fuente
Sé que esto es una especie de subproceso antiguo, sin embargo, esto se puede lograr con la
min-height
propiedad CSS de una manera limpia, así que lo dejaré aquí para futuras referencias:Hice un violín basado en el código OP publicado aquí: http://jsfiddle.net/U5x4T/1/ , a medida que elimine y agregue divs dentro, notará cómo el contenedor se expande o reduce de tamaño
Las únicas dos cosas que necesita para lograr esto, además del código OP, son:
* Desbordamiento en el contenedor principal (requerido para los divs flotantes)
* propiedad css de altura mínima, más información disponible aquí: http://www.w3schools.com/cssref/pr_dim_min-height.asp
fuente
Pantalla agregada: en línea con el div y creció automáticamente (no el material de desplazamiento) cuando el contenido de altura se hizo más grande que la altura de div establecida de 200px
fuente
Puedes usar CSS Grid Layout . El soporte es bastante amplio en este momento: verifíquelo en caniuse .
Aquí está el ejemplo en jsfiddle. También ejemplo con toneladas de cosas de texto.
Código HTML:
Código CSS:
fuente
Intenté casi todas las sugerencias enumeradas anteriormente y ninguna funcionó. Sin embargo, "display: table" me sirvió.
fuente
No es necesario usar mucho CSS, solo use bootstrap, luego use:
para el div que necesita ser llenado.
Puedes obtener bootstrap desde aquí
fuente