Quiero hacer que el cuerpo tenga el 100% de la altura del navegador. ¿Puedo hacer eso usando CSS?
Intenté configurar height: 100%
, pero no funciona.
Quiero establecer un color de fondo para que una página llene toda la ventana del navegador, pero si la página tiene poco contenido, aparece una barra blanca fea en la parte inferior.
Respuestas:
Intente configurar la altura del elemento html al 100% también.
El cuerpo busca en su padre (HTML) cómo escalar la propiedad dinámica, por lo que el elemento HTML también debe tener su altura establecida.
Sin embargo, el contenido del cuerpo probablemente tendrá que cambiar dinámicamente. Establecer la altura mínima al 100% logrará este objetivo.
fuente
body {min-height}
versión, entonces no puede usar el.body-child{height: 100%}
truco.vh
->body { height: 100vh }
- marque la respuesta aquí stackoverflow.com/a/25829844/2680216Como alternativa a establecer las alturas de los elementos
html
y , también puede usar longitudes de porcentaje de ventana gráfica.body
100%
En este caso, podría usar el valor
100vh
, que es la altura de la ventana gráfica.Ejemplo aquí
Esto es compatible con la mayoría de los navegadores modernos. Puede encontrar soporte aquí .
fuente
margin: 0;
para evitar una barra de desplazamiento vertical persistente a la derecha.Si tiene una imagen de fondo, entonces querrá configurar esto en su lugar:
Esto garantiza que su etiqueta de cuerpo pueda seguir creciendo cuando el contenido sea más alto que la ventana gráfica y que la imagen de fondo continúe repitiéndose / desplazándose / lo que sea cuando comience a desplazarse hacia abajo.
Recuerde que si tiene que admitir IE6, necesitará encontrar una manera de adaptarse
height:100%
al cuerpo, IE6 se trataheight
como demin-height
todos modos.fuente
body{min-height: 100vh}
body { height: auto; }
que las barras de desplazamiento no se muestren en Firefox. Aparte de eso, funciona perfectamente.Si desea mantener los márgenes en el cuerpo y no desea barras de desplazamiento, use el siguiente CSS:
La configuración
body {min-height:100%}
le dará barras de desplazamiento.Vea la demostración en http://jsbin.com/aCaDahEK/2/edit?html,output .
fuente
height: auto;
en labody
cláusula para que ahora aparezcan barras de desplazamiento.fuente
Después de probar varios escenarios, creo que esta es la mejor solución:
Es dinámico en el que las
html
y losbody
elementos se expandirán automáticamente si su contenido de desbordamiento. Probé esto en la última versión de Firefox, Chrome e IE 11.Vea el violín completo aquí (para los que odian la mesa, siempre puede cambiarlo para usar un div):
https://jsfiddle.net/71yp4rh1/9/
Dicho esto, hay varios problemas con las respuestas publicadas aquí .
El uso del CSS anterior hará que el html y el elemento del cuerpo NO se expandan automáticamente si su contenido se desborda como se muestra aquí:
https://jsfiddle.net/9vyy620m/4/
A medida que te desplazas, ¿notas el fondo que se repite? Esto sucede porque la altura del elemento del cuerpo NO ha aumentado debido al desbordamiento de su tabla secundaria. ¿Por qué no se expande como cualquier otro elemento de bloque? No estoy seguro. Creo que los navegadores manejan esto incorrectamente.
Establecer una altura mínima del 100% en el cuerpo como se muestra arriba causa otros problemas. Si hace esto, no puede especificar que una división o tabla secundaria ocupe un porcentaje de altura como se muestra aquí:
https://jsfiddle.net/aq74v2v7/4/
Espero que esto ayude a alguien. Creo que los navegadores están manejando esto incorrectamente. Esperaría que la altura del cuerpo se ajuste automáticamente cada vez más si sus hijos se desbordan. Sin embargo, eso no parece suceder cuando usa 100% de altura y 100% de ancho.
fuente
height: 100vh
tampoco es una solución. Configurar su contenedor superior para que sea100vh
alto y100vw
podría causar problemas si el contenedor tiene barras de desplazamiento, entonces será más grande de lo que debería ser (y podría hacer que las barras de desplazamiento sean visibles innecesariamente). Estoheight: 100vh
también nos causó problemas en los dispositivos Android más nuevos (por ejemplo, Xiaomi Mi 9 con Android 9), donde el contenedor sería más grande que la pantalla misma y haría una barra de desplazamiento vertical innecesaria al cuerpo del documento.Lo que uso al comienzo de literalmente cada archivo CSS que uso es el siguiente:
El margen de 0 asegura que los elementos HTML y BODY no sean posicionados automáticamente por el navegador para tener espacio a la izquierda o derecha de ellos.
El relleno de 0 asegura que los elementos HTML y BODY no empujen automáticamente todo hacia abajo o hacia la derecha debido a los valores predeterminados del navegador.
Las variantes de ancho y alto están configuradas al 100% para garantizar que el navegador no las redimensione en anticipación de tener un margen o relleno autoestablecidos, con mínimo y máximo configurados en caso de que ocurran cosas extrañas e inexplicables, aunque usted Probablemente no los necesite.
Esta solución también significa que, como lo hice cuando comencé a usar HTML y CSS hace varios años, no tendrá que dar su primer
<div>
amargin:-8px;
para que encaje en la esquina de la ventana del navegador.Antes de publicar, miré mi otro proyecto CSS de pantalla completa y descubrí que todo lo que usaba allí era solo
body{margin:0;}
y nada más, lo que ha funcionado bien durante los 2 años que llevo trabajando en él.Espero que esta respuesta detallada ayude, y siento tu dolor. En mi opinión, es tonto que los navegadores establezcan un límite invisible en el lado izquierdo y, a veces, en la parte superior de los elementos del cuerpo / html.
fuente
width: 100%
elementos body y html? Sí, entiendo que desde el punto de vista práctico,body { margin: 0; }
debería ser suficiente en la mayoría de los casos. Solo quiero entender más a fondo.Una actualización rápida
Una mejor solución con el CSS de hoy
fuente
overflow: auto
Aquí haz la magia. Por cierto, uso Chrome.Aquí:
fuente
También puede usar JS si es necesario
fuente
Tratar
fuente
width: 100%
elementos body y html? Sí, entiendo que desde el punto de vista práctico,body { margin: 0; }
debería ser suficiente en la mayoría de los casos. Solo quiero entender más a fondo.Por favor, chequee esto:
O pruebe el nuevo método Altura de ventana gráfica:
Ventana gráfica: si usa la ventana gráfica, significa que el tamaño del contenido de la pantalla tendrá toda la altura de la pantalla.
fuente
width: 100%
elementos body y html?Si no desea el trabajo de editar su propio archivo CSS y definir las reglas de altura usted mismo, los marcos CSS más típicos también resuelven este problema con el elemento del cuerpo llenando la totalidad de la página, entre otros problemas, con facilidad con múltiples tamaños de ventanas gráficas.
Por ejemplo, el marco Tacit CSS resuelve este problema fuera de la caja, en el que no necesita definir ninguna regla y clase CSS y solo incluye el archivo CSS en su HTML.
fuente
Funciona para todos los principales navegadores: FF, Chrome, Opera, IE9 +. Trabaja con imágenes de fondo y gradientes. Las barras de desplazamiento están disponibles según las necesidades de contenido.
fuente
Yo usaria esto
El navegador usará
min-height: 100vh
y si de alguna manera el navegador es un poco más viejomin-height: 100%
, será la alternativa.Esto
overflow: auto
es necesario si desea que el cuerpo y el html expandan su altura cuando cambie el tamaño de la pantalla (por ejemplo, a un tamaño móvil)fuente
Solo con 1 línea de CSS ... Puede hacer esto.
fuente
100vh
en realidad no es lo que esperas para iOS Safari.todas las respuestas son 100% correctas y bien explicadas, pero hice algo bueno y muy simple para que respondiera.
aquí el elemento ocupará el 100% de la altura del puerto de vista, pero cuando se trata de la vista móvil, no se ve bien, especialmente en la vista vertical (móvil), por lo que cuando el puerto de vista se hace más pequeño, el elemento colapsará y se superpondrá entre sí. así que para que sea poco sensible aquí hay código. Espero que alguien obtenga ayuda de esto.
Aquí está JSfiddle Demo.
fuente
Aquí actualiza
fuente
Sobre el espacio extra en la parte inferior: ¿es su página una aplicación ASP.NET? Si es así, probablemente haya una envoltura de casi todo en su marcado. No olvides diseñar el formulario también. Agregar
overflow:hidden;
al formulario puede eliminar el espacio adicional en la parte inferior.fuente
fuente
width: 100%
elementos body y html? Sí, entiendo que desde el punto de vista práctico,body { margin: 0; }
debería ser suficiente en la mayoría de los casos. Solo quiero entender más a fondo.CSS3 tiene un nuevo método.
Hace que ViewPort sea 100% igual a la altura.
Entonces su Código debería ser
fuente