Обновленный ответ
Первоначальному ответу более пяти лет, и он не выполняется, поскольку отступ не обновляется в случае увеличения или уменьшения высоты нижнего колонтитула.Вы можете привязать к событию resize окна и вызывать его при каждом пожаре, но это будет немного чрезмерно.
Вместо этого я бы рекомендовал вам привязать к window.onresize
событие, но throttle логика такова, что мы не вычисляем стили, перебиваем DOM и вызываем макеты десятки раз в секунду :
(function () {
"use strict";
var body = document.querySelector( "body" );
var footer = document.querySelector( "footer" );
window.addEventListener(
// Throttle logic: http://jsfiddle.net/jonathansampson/7b0neb6p/
"resize", throttle( adjustContainerPadding(), 500 )
);
function adjustContainerPadding () {
body.style.paddingBottom = window.getComputedStyle( footer ).height;
return adjustContainerPadding;
}
}());
Когдастраница загружается, мы немедленно запускаем метод adjustContainerPadding
.Этот метод устанавливает paddingBottom
тела в соответствии с вычисленной высотой footer
.Обратите внимание, что для метода window.getComputedStyle
требуется IE9 или выше.
Fiddle: http://jsfiddle.net/jonathansampson/7b0neb6p/
Оригинальный ответ
Я бы рекомендовалВы (для простоты) просто используете код cssstickyfooter и устанавливаете значения css с помощью javascript (код jQuery следует).
$(function(){
var footerHeight = $("#footer").height();
$("#main").css("padding-bottom", footerHeight);
$("#footer").css("margin-top", -footerHeight);
});
код не проверен, но должен нормально работать
Независимо от того, сколько контента у вас в нижнем колонтитуле, это автоматически сбросит значения CSS для вас.