position:relative;overflow:hidden;border-top; Браузеры

Trifler Blog

position:relative;overflow:hidden;border-top; Браузеры

Время то времени, занимаясь проблемой footer-а, который всегда внизу, то есть при минимуме информации в области контента, страница всегда имеет сто процентную высоту без вертикальной прокрутки, а что делать, иногда это насущно необходимо.

Также, ко всему этому, как частный случай, рассматривается расположение header по html-коду ниже области контента и footer-а. Это связано с тем, что очень часто в состав header входит горизонтальное меню с многочисленными вложениями и чтобы добраться до содержания страницы приходится прокручивать страницу на пару-тройку экранов.

Особенно это не удобно, когда по каким-то причинам стилевой файл не был подгружен, да и без стилей все смотрится более или менее прилично.

В общем никаких компромиссов. Контент, информационная составляющая любой web-страницы, впереди планеты всей.

Ранее в касался этой проблемы, приводя не самую распространенную методику, позволяющую это сделать достаточно легко и просто.

Структура страницы приблизительно выглядит следующим образом:

  <div id="middle">
    <div class="wrap">… </div>
  </div>
  <div id="footer">… </div>
  <div class="header">
    <div id="header">… </div>
  </div>

Контейнер с классом header нужен, для того, чтобы абсолютно от позиционировать собственно сам header.

Контейнер с классом wrap служит для тех же целей, подготавливая место для header-а, а также позволяет создавать необходимую структуру области контента и колонок навигации, в данном конкретном случае, не рассматривается.

Стили описывающие поведение нашей разметки:

* {margin:0;padding:0;}
html,body {height:100%;}
body {background-color:#eee;position:relative;}
#middle,#header,#footer {margin:0 auto;width:930px;}
*html #middle {overflow:visible;height:100%;}
*html .wrap {zoom:1;}
#middle {
  background-color:#fff;
  border:#000 solid;
  border-width:0 1px;
  margin-top:-41px; /* height footer */
  min-height:100%;
}
.wrap {margin-top:151px;} /* height #header+#footer */
.header {position:absolute;top:0;left:0;width:100%;}
#header {
  background-color:#aaf;
  border:#000 1px solid;
  height:110px;
}
#footer {
  background-color:#eef;
  border:#000 1px solid;
}

Скриншот.

body_relative

Опаньки, а что с OPERA? А почему собственно появился не запланированный отступ сверху и вертикальная прокрутка? Причем, это происходит в OPERA9.xx, FF2(3), IE8 beta2. Зато IE6 просто молодец.

Вопрос, даже не в том, кто прав, а что делать? Остановитесь, подумайте. Ответили? Нет, тогда читаем дальше.

Ответ на вопрос содержится в заголовке поста, да именно, указание стилевого правила:

body {position:relative;}

вводит в заблуждение крутые и продвинутые браузеры. А вот всенародно "любимый" IE6 на высоте.

Удаляем.

Скриншот.

no hidden

Что-то опять не так. Вертикальная прокрутка и поверьте на слово, примеры само собой будут приведены, другие неприятности.

Поведение перечисленных выше браузеров аналогично.

Задавая тот или иной вопрос по ходу повествования, я знаю на него ответ, а вы сможете не заглядывая в стили тестовой страницы, имея только стили находящиеся чуть выше, сказать, чего не хватает браузерам проходящим самые навороченные тесты чуть ли не на ура?

Догадались? Если нет, то еще раз внимательно читаем заголовок поста.

Необходимо в стили добавить:

#middle,#header,#footer {overflow:hidden;}

Очередной скриншот.

overflow:hidden

Спасло ли это действо, положение? Нет вертикальной прокрутки уже плюс.

А если вернуть:

body {position:relative;}
relative_hidden

Во как, часть header-а улетела вверх.

Отыграем назад.

Визуальные разночтения заметны.

Если поменять

.wrap {margin-top:151px;}

на

.wrap {padding-top:151px;} 

Картина поменяется на обратную:

padding-top

Кто виноват, не известно, но вот что делать в данной ситуации?

Ответ ищем в заголовке.

Сместим акцент :

.wrap {border-top:151px solid;}
border-top

Вот теперь, полный фен-шуй.

По идее должно последовать заключение, выводы и рекомендации, но рассматривался частный случай из практики. Для себя завязал очередной узелок на память.

Переходим на страницу с примерами

P.S. Именно по этой методике прибивается footer к нижней границе окна браузера в одной из последующей частей цикла "Техника Gordi"

Комментарии к этой заметке больше не принимаются.


Рейтинг популярности - на эти заметки чаще всего ссылаются:

banner counters.php

leftcounters
width:160px;
height:160px;

banner counters.php

centercounters
width:160px;
height:160px;

banner counters.php

rightcounters
width:160px;
height:160px;

Горизонтальный banner counters.php - width:494px;

декабрь, 2008
пн вт ср чт пт сб вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
free  counters