Je suis arrivé ici en cherchant une solution à un problème similaire, à savoir une barre de bas de page qui s'étend sur toute la largeur de la fenêtre et se trouve sous le contenu (de hauteur et de largeur variables). En d'autres termes, il faut donner l'impression que le pied de page est "fixe" en ce qui concerne sa position horizontale, mais qu'il conserve sa position normale dans le flux de documents en ce qui concerne sa position verticale. Dans mon cas, le texte du pied de page était aligné à droite, ce qui m'a permis d'ajuster dynamiquement la largeur du pied de page. Voici la solution que j'ai trouvée :
HTML
<div id="footer-outer">
<div id="footer">
Footer text.
</div><!-- end footer -->
</div><!-- end footer-outer -->
CSS
#footer-outer
{
width: 100%;
}
#footer
{
text-align: right;
background-color: blue;
/* various style attributes, not important for the example */
}
CoffeeScript / JavaScript
(En utilisant prototype.js).
class Footer
document.observe 'dom:loaded', ->
Footer.width = $('footer-outer').getDimensions().width
Event.observe window, 'scroll', ->
x = document.viewport.getScrollOffsets().left
$('footer-outer').setStyle( {'width': (Footer.width + x) + "px"} )
qui se compile en :
Footer = (function() {
function Footer() {}
return Footer;
})();
document.observe('dom:loaded', function() {
return Footer.width = $('footer-outer').getDimensions().width;
});
Event.observe(window, 'scroll', function() {
var x;
x = document.viewport.getScrollOffsets().left;
return $('footer-outer').setStyle({
'width': (Footer.width + x) + "px"
});
});
Cela fonctionne bien dans FireFox, et assez bien dans Chrome (il y a un peu d'instabilité) ; je n'ai pas essayé les autres navigateurs.
Je voulais aussi que l'espace libre sous le pied de page soit d'une couleur différente, j'ai donc ajouté ceci footer-stretch
div :
HTML
...
</div><!-- end footer -->
<div id="footer-stretch"></div>
</div><!-- end footer-outer -->
CSS
#footer-outer
{
height: 100%;
}
#footer-stretch
{
height: 100%;
background-color: #2A2A2A;
}
Notez que pour que le div #footer-stretch fonctionne, tous les éléments parents jusqu'à l'élément body (et éventuellement l'élément html - pas sûr) doivent avoir une hauteur fixe (dans ce cas, height = 100 %).