Estoy usando el siguiente: Diseño CSS - 100% de altura
Altura mínima
El elemento #container de esta página tiene una altura mínima del 100%. De esa manera, si el contenido requiere más altura de la que proporciona la ventana gráfica, la altura de #content obliga a #container a hacerse más larga también. Las posibles columnas en #content se pueden visualizar con una imagen de fondo en #container; los divs no son celdas de tabla, y no necesita (ni desea) los elementos físicos para crear un efecto visual de este tipo. Si aún no estás convencido; piense en líneas y gradientes tambaleantes en lugar de líneas rectas y esquemas de colores simples.
Posicionamiento relativo
Debido a que #container tiene una posición relativa, #footer siempre permanecerá en su parte inferior; dado que la altura mínima mencionada anteriormente no impide que #container se escale, esto funcionará incluso si (o más bien especialmente cuando) #content obliga a #container a alargarse.
Fondo acolchado
Dado que ya no está en el flujo normal, el relleno inferior de #content ahora proporciona el espacio para el #footer absoluto. Este relleno se incluye en la altura desplazada de forma predeterminada, de modo que el pie de página nunca se superpondrá al contenido anterior.
Escale un poco el tamaño del texto o cambie el tamaño de la ventana de su navegador para probar este diseño.
html,body {
margin:0;
padding:0;
height:100%; /* needed for container min-height */
background:gray;
font-family:arial,sans-serif;
font-size:small;
color:#666;
}
h1 {
font:1.5em georgia,serif;
margin:0.5em 0;
}
h2 {
font:1.25em georgia,serif;
margin:0 0 0.5em;
}
h1, h2, a {
color:orange;
}
p {
line-height:1.5;
margin:0 0 1em;
}
div#container {
position:relative; /* needed for footer positioning*/
margin:0 auto; /* center, not in IE5 */
width:750px;
background:#f0f0f0;
height:auto !important; /* real browsers */
height:100%; /* IE6: treaded as min-height*/
min-height:100%; /* real browsers */
}
div#header {
padding:1em;
background:#ddd url("../csslayout.gif") 98% 10px no-repeat;
border-bottom:6px double gray;
}
div#header p {
font-style:italic;
font-size:1.1em;
margin:0;
}
div#content {
padding:1em 1em 5em; /* bottom padding for footer */
}
div#content p {
text-align:justify;
padding:0 1em;
}
div#footer {
position:absolute;
width:100%;
bottom:0; /* stick to bottom */
background:#ddd;
border-top:6px double gray;
}
div#footer p {
padding:1em;
margin:0;
}
Funciona bien para mi.
min-height: 100vh;
. Esto ajusta la altura igual o mayor al tamaño de la pantalla,vh: vertical height
. Para más información: w3schools.com/cssref/css_units.asp .