Фон:
Я попытался решить вопрос StackOverflow еще одну задачу компоновки HTML/CSS - боковую панель высочайшего уровня с липким нижним колонтитулом самостоятельно, используя jQuery. Поскольку боковая панель в моем случае может быть длиннее основного содержимого, она соответствует случаю комментарий 8128008. Это делает невозможным иметь боковую панель дольше, чем основное содержимое, и иметь липкий нижний колонтитул без проблем при сокращении окна браузера.
Статус-кво:
У меня есть html-страница с div
, которая автоматически растягивается, чтобы заполнить экран. Поэтому, если пустое пространство ниже элемента, я растягиваю его вниз:
Но если окно просмотра браузера меньше самого div
, растягивание не выполняется, но появляется полоса прокрутки:
Я подключил jQuery к событию изменения размера окна, чтобы изменить размер div
, если окно браузера не будет маленьким и удалит любое изменение размера в другом случае. Это делается путем проверки, что область просмотра больше или меньше, чем document
. Если область просмотра меньше, чем document
, кажется, что содержимое больше, чем окно браузера, почему изменение размера не выполняется; в другом случае мы изменим размер div
, чтобы заполнить страницу.
if ($(document).height() > $(window).height()) {
// Scrolling needed, page content extends browser window
// --> No need to resize the div
// --> Custom height is removed
// [...]
} else {
// Window is larger than the page content
// --> Div is resized using jQuery:
$('#div').height($(window).height());
}
Проблема:
До сих пор все работает хорошо. Но если я сокращаю окно браузера, бывают случаи, когда размер div
должен быть изменен, но document
больше высоты window
, почему мой script предполагает, что не требуется изменение размера и div
изменение размера.
Фактически, точка, если я проверяю высоту document
, используя Firebug после появления ошибки, высота имеет только значение, которое должно было иметь. Поэтому я подумал, что высота document
установлена с небольшой задержкой. Я попытался запустить код изменения размера немного, но это не помогло.
Я установил демонстрацию на jsFiddle. Просто медленно снимите окно браузера, и вы увидите мерцание div
. Также вы можете смотреть вывод console.log()
, и вы заметите, что в случае "мерцания" высота document
и высота window
различаются, а не равны.
Я заметил это поведение в Firefox 7, IE 9, Chrome 10 и Safari 5.1. Вы можете это подтвердить?
Знаете ли вы, есть ли исправление? Или это подход совершенно неправильный? Пожалуйста, помогите мне.