Parece imposible hacer que este "se vea bien" con solo CSS/HTML. Como se menciona en Ruup o Fixed position in only one direction, aplicar capas sobre JS es una buena opción.
Afortunadamente, he encontrado una manera de conseguir que funcione de alguna manera (No es hermoso): http://jsfiddle.net/MKEbW/5/
HTML (dentro del cuerpo-tag):
<div id="simulated-html">
<div id="footer">
<span>
<!-- Footer text here -->
</span>
</div>
<div id="simulated-body">
<!-- Your website here -->
</div>
</div>
CSS:
* { margin:0; padding:0; }
html {
font: 12px/1.5em Georgia;
}
p { padding: 5px; }
html, body {
height: 100%;
overflow: hidden; /* hide scrollbars, we create our own */
}
#simulated-html {
background: orange;
overflow-x: scroll; /* force horizontal scrollbars (optional) */
overflow-y: hidden; /* hide. we use the #simulated-body for it. */
position: relative; /* to align #footer on #simulated-html */
height: 100%;
}
#simulated-body {
overflow-y: scroll; /* force vertical scrollbars (optional) */
overflow-x: hidden; /* hide. we use the #simulated-html for it. */
height: 100%;
background: #eee;
/* use as a container */
width: 450px;
margin: 0 auto;
}
#footer {
position: absolute;
bottom: 0px; /* vertical align it to #simulated-html */
width: 100%;
background: red;
z-index: 99; /* always show footer */
color: white;
}
#footer span {
width: 450px;
margin: 0 auto;
background: green;
display: block;
}
Parece que funciona en IE7 + y navegadores modernos, probados a través de browserlab.adobe.com.
probado con barras de desplazamiento, más pequeño y más amplias ventanas en Chrome 18.
recomiendo una reserva para los navegadores que no son capaces y/o una solución JS.
Todo el que lea esto, por favor, tenga en cuenta, que hace el trabajo, pero es indispensable tener jQuery vinculado en su archivo '.html' para que funcione. –