Ich bin hier angekommen und habe nach einer Lösung für ein ähnliches Problem gesucht, nämlich eine Fußzeilenleiste, die sich über die Breite des Fensters erstreckt und unter dem Inhalt (variable Höhe und Breite) liegt. Mit anderen Worten, lassen Sie es so aussehen, als ob die Fußzeile in Bezug auf ihre horizontale Position "fest" ist, aber ihre normale Position im Dokumentenfluss in Bezug auf ihre vertikale Position beibehält. In meinem Fall war der Fußzeilentext rechtsbündig ausgerichtet, sodass ich die Breite der Fußzeile dynamisch anpassen konnte. Folgendes habe ich mir ausgedacht:
HTML
<div id="footer-outer">
<div id="footer">
Footer text.
</div>
</div>
CSS
#footer-outer
{
width: 100%;
}
#footer
{
text-align: right;
background-color: blue;
}
CoffeeScript / JavaScript
(Verwenden von 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"} )
was kompiliert in:
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"
});
});
Dies funktioniert gut in FireFox und ziemlich gut in Chrome (es ist ein wenig nervös); Ich habe keine anderen Browser ausprobiert.
Ich wollte auch, dass jeder freie Platz unter der Fußzeile eine andere Farbe hat, also fügte ich dieses footer-stretch
div hinzu :
HTML
...
</div>
<div id="footer-stretch"></div>
</div>
CSS
#footer-outer
{
height: 100%;
}
#footer-stretch
{
height: 100%;
background-color: #2A2A2A;
}
Beachten Sie, dass alle übergeordneten Elemente bis zum body-Element (und möglicherweise das HTML-Element - nicht sicher) eine feste Höhe haben müssen (in diesem Fall height = 100%), damit das # footer-align div funktioniert.