2014 ACTUALIZACIÓN: La forma moderna de resolver este problema de diseño es use the flexbox
CSS model. Es compatible con todos los principales navegadores e IE11 +.
Aquí es una solución para el pie de página pegajosa de la altura flexible, utilizando div
s con display: table-row
:
html, body {
height: 100%;
margin: 0;
}
.wrapper {
display: table;
height: 100%;
width: 100%;
background: yellow;
}
.content {
display: table-row;
/* height is dynamic, and will expand... */
height: 100%;
/* ...as content is added (won't scroll) */
background: turquoise;
}
.footer {
display: table-row;
background: lightgray;
}
<div class="wrapper">
<div class="content">
<h2>Content</h2>
</div>
<div class="footer">
<h3>Sticky footer</h3>
<p>Footer of variable height</p>
</div>
</div>
Lo que hay que señalar es que el CSS se diseñó a la disposición documentos , no pantallas de aplicaciones web. La pantalla CSS: las propiedades de la tabla son muy válidas y se admiten en all major browsers. Esto no es lo mismo que usar tablas estructurales para el diseño.
+1, esto es realmente genial. ¿Conoces algún inconveniente de este enfoque? ¿Cómo crees que se mantendrá en el móvil? –
Esto es brillante, ¡gracias! Sin embargo, no se ajustaba a mis necesidades, que era para un pie de página adhesivo de altura variable y un área de contenido que * se * desplazaría. Descubrí que podía hacerlo omitiendo "display: table-row" en el contenido y estableciendo "overflow-y: scroll". En el pie de página, luego lo cambié a "display: table-footer-group". ¡Esto ha causado que las cosas funcionen exactamente como se desea! – nkoren
Debe agregar 'table-layout: fixed;' al contenedor de clase. Sin eso, tuve algunos problemas de ancho en IE. El contenido se desbordó independientemente del ancho máximo. –