Фон:
Я пытался решить вопрос StackOverflow еще одна проблема с макетом HTML / CSS - полная высота боковой панели с липким нижним колонтитулом самостоятельно с использованием jQuery.Поскольку боковая панель в моем случае может быть длиннее основного содержимого, она соответствует случаю комментарий 8128008 .Это делает невозможным иметь боковую панель длиннее основного содержимого и иметь липкий нижний колонтитул без проблем при сжатии окна браузера.
Статус-кво:
У меня есть HTML-страница сdiv
, который автоматически растягивается для заполнения экрана.Поэтому, если под элементом есть пустое пространство, я растягиваю его вниз:
![The div is stretched to fill the screen](https://i.stack.imgur.com/ZMQMh.png)
Но если область просмотра браузера меньше самого div
, растяжение не выполняется, нополоса прокрутки показывает:
![Small viewport: no resizing](https://i.stack.imgur.com/4uu8S.png)
Я прикрепил 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
, поэтому мой сценарий предполагает, что изменение размера не требуется, а div
Изменение размера удалено.
Суть в том, что если я проверю высоту document
с помощью Firebug после того, как ошибка появилась, то высота имеет только значение, которое должно было быть.Поэтому я подумал, что высота document
устанавливается с небольшой задержкой.Я попытался запустить код изменения размера с небольшой задержкой, но это не помогло.
Я настроил демонстрацию на jsFiddle .Просто медленно уменьшите окно браузера, и вы увидите div
«мерцание».Также вы можете посмотреть вывод console.log()
и заметите, что в случае "мерцания" высота document
и высота window
отличаются, а не равны.
Я заметил такое поведение в Firefox 7, IE 9, Chrome 10 и Safari 5.1.Вы можете это подтвердить?
Знаете ли вы, есть ли исправление?Или это совершенно неверный подход?Пожалуйста, помогите мне.