Después de probar varios escenarios, creo que esta es la mejor solución:
html {
width: 100%;
height: 100%;
display: table;
}
body {
width: 100%;
display: table-cell;
}
html, body {
margin: 0px;
padding: 0px;
}
Es dinámico en el que las html
y los body
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í .
html, body {
height: 100%;
}
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.
html {
height: 100%;
}
body {
min-height: 100%;
}
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.