Tengo un elemento div en mi página con su altura establecida al 100%. La altura del cuerpo también se establece en 100%. El div interno tiene un fondo y todo eso y es diferente del fondo del cuerpo. Esto funciona para hacer que la altura del div sea el 100% de la altura de la pantalla del navegador, pero el problema es que tengo contenido dentro de ese div que se extiende verticalmente más allá de la altura de la pantalla del navegador. Cuando me desplazo hacia abajo, el div termina en el punto en el que tenía que comenzar a desplazarse por la página, pero el contenido se desborda más allá de eso. ¿Cómo hago para que el div siempre vaya hasta el fondo para adaptarse al contenido interno?
Aquí hay una simplificación de mi CSS:
body {
height:100%;
background:red;
}
#some_div {
height:100%;
background:black;
}
Una vez que desplazo la página, la negrura termina y el contenido fluye hacia el fondo rojo. No parece importar si configuro la posición en relativo o absoluto en #some_div, el problema ocurre de cualquier manera. El contenido dentro del #some_div está en su mayoría absolutamente posicionado, y se genera dinámicamente desde una base de datos, por lo que su altura no se puede conocer de antemano.
Editar: Aquí hay una captura de pantalla del problema:
overflow: hidden;
,overflow: scroll;
, etc.).Respuestas:
Esto es lo que debe hacer en el estilo CSS, en general
div
Y no tocar
height
fuente
height: 100%
ahtml, body
y el div contenedor para que se llene la altura cuando no había suficiente contenido embargo.display: block;
necesario? Los div ya son elementos de nivel de bloque.
elimínelos. Intente también ajustar la altura de la línea. Por ejemplo, lo he puestoline-height: 0
, porque no necesitaba texto, solo para mostrar una imagen.Establezca el
height
toauto
ymin-height
to100%
. Esto debería resolverlo para la mayoría de los navegadores.fuente
height
es100%
ymin-height
esauto
- esperaría que estos sean intercambiables en este caso, pero parece que no lo son.Por lo general, 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
Si solo deja el
height: 100%
y usadisplay:block;
eldiv
, ocupará tanto espacio como el contenido dentro deldiv
. De esta manera, todo el texto permanecerá en el fondo negro.fuente
display: block
? No veo eso en tu pregunta.float: none;
usarclear:both;
. Hace lo mismo pero es más cross-browser, @RonnieVDPoelEsta pregunta puede ser antigua, pero merece una actualización. Aquí hay otra forma de hacer eso:
fuente
Prueba esto:
IE6 y versiones anteriores no admiten la propiedad min-height.
Creo que el problema es que cuando le dices al cuerpo que tenga una altura del 100%, su fondo solo puede ser tan alto como el alto de la "vista" de un navegador (el área de visualización que excluye las barras de herramientas de los navegadores y las barras de estado y barras de menús y el bordes de la ventana). Si el contenido es más alto que una ventana gráfica, desbordará la altura dedicada al fondo.
Esta propiedad de altura mínima en el cuerpo debe FORZAR que el fondo sea al menos tan alto como una ventana gráfica si su contenido no llena una página entera hasta el final, pero también debe permitir que crezca hacia abajo para abarcar más contenido interior.
fuente
Antigua pregunta, pero en mi caso encontré el uso
position:fixed
resuelto para mí. Sin embargo, mi situación podría haber sido un poco diferente. Tenía un semitransparente superpuestodiv
con una animación de carga que necesitaba mostrar mientras se cargaba la página. Entonces, usarheight:auto / 100%
omin-height: 100%
ambos llenó la ventana pero no el área fuera de la pantalla. Utilizandoposition:fixed
este desplazamiento superpuesto con el usuario, siempre cubría el área visible y mantenía mi animación de precarga centrada en la pantalla.fuente
Simplemente agregue estas dos líneas en su ID de CSS #some_div
¡Después de eso obtendrás lo que estás buscando!
fuente
No estoy completamente seguro de haber entendido la pregunta porque esta es una respuesta bastante sencilla, pero aquí va ... :)
¿Has intentado configurar la propiedad de desbordamiento del contenedor en visible o automático?
Agregar eso debería empujar el contenedor negro al tamaño que requiera su contenedor dinámico. Prefiero visible a automático porque parece que viene con barras de desplazamiento ...
fuente
Los navegadores modernos admiten la unidad de "altura de ventana gráfica". Esto expandirá el div a la altura de vista disponible. Lo encuentro más confiable que cualquier otro enfoque.
fuente
Incluso tú puedes hacer así
Esto incluirá cada div dinámico según el contenido. Suponga que si tiene un div común con clase, aumentará la altura de cada div dinámico según el contenido
fuente
También puedes usar
el mío trabajó con esto
fuente
REVESTIMIENTO SIN POSICIÓN: FIJO
Una forma realmente genial de resolver esto para un menú reciente fue configurar el cuerpo para:
y configura tu clase de envoltura así:
Esto significa que no tiene que establecer la posición fija y aún puede permitir el desplazamiento. Lo he usado para superponer menús que son REALMENTE grandes.
fuente
usar flex
fuente
Ok, intenté algo como esto:
cuerpo (normal)
No es la forma exacta de escribirlo, pero si haces que la pantalla div principal se muestre como una tabla, se expande y luego implemento barras de desplazamiento.
fuente