Я прибыл сюда в поисках решения аналогичной проблемы, которая заключалась в том, чтобы иметь нижний колонтитул, который охватывает ширину окна и находится ниже содержимого (переменной высоты и ширины).Другими словами, создайте впечатление, что нижний колонтитул «зафиксирован» относительно его горизонтального положения, но сохраняет свое обычное положение в потоке документов относительно его вертикального положения.В моем случае текст нижнего колонтитула был выровнен по правому краю, поэтому мне удалось динамически настроить ширину нижнего колонтитула.Вот что я придумал:
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
(с использованием 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"} )
, который компилируется в:
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"
});
});
Это хорошо работает в FireFox и довольно хорошо в Chrome (немного нервно);Я не пробовал другие браузеры.
Я также хотел, чтобы любое свободное пространство под нижним колонтитулом было другого цвета, поэтому я добавил это 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;
}
Обратите внимание, что для работы div # footer-stretch все родительские элементы вплоть до элемента body (и, возможно, элемент html - не уверен) должны иметь фиксированную высоту(в этом случае высота = 100%).