Пустые споры, слов туман, Дворцы и норы, свет и тьма, И облегченье лишь в одном, Стоять до смерти на своем..."В моей душе осадок зла" К. Никольский
Как и было обещано…
Но прежде, чем перейти к шаблону, не много ликбеза :)
Давайте посмотрим, из чего в общем случае состоит web-страница:
Грубо говоря, имеются четыре модуля. В любом из них мы творим, все, что нашей душе угодно. Горизонтальное меню может находиться в шапке, под ней, над ней, так же его можно продублировать внизу страницы.
Подвал при необходимости можно сделать более функциональным, располагая в нем дополнительную информацию. В примере представленном в конце статьи, в footer-е расположены несколько контейнеров под счетчики и баннеры, возможно, размеры придеться уточнить, показана идея, все остальное в ваших руках.
Самой сложной из всех перечисленных является центральная часть. Краткий перечень, если не на все случаи жизни, то очень часто встречающихся и популярных разновидностей данного модуля:
Такой модуль используется мной во многих работах, в нем осуществляется легкий переход к выше перечисленным видам центральной части. В его основе лежит модернизированный вариант универсального шаблона.
Учитывая все сказанное, вернемся к нашему шаблону. Пусть он будет двух колоночным, левая колонка под меню и рекламный блок.
Представление html-кода – контент идет раньше боковой колонки. Такая структура представляется оптимальной не только с точки зрения SEO, но и при отключенных стилях. Область контента резиновая, причем для этих целей мы не будем использовать ни JavaScript, ни expression для IE6, эмуляция max/min-width и min-height для основных браузеров, только на css.
В этом нам поможет цикл статей автора блога, посвященных данному вопросу:
css
* {font:11px/1.18 verdana,arial,helvetica,sans-serif;margin:0;padding:0;}
html {background-color:#eee;}
body {margin:5px 7%;padding:0 0 0 720px;}
#trifler {margin:0 0 0 -720px;position:relative;}
*html #trifler {float:right;}
#header {
background-color:#f9f9f9;
border:silver 1px solid;
border-bottom:0;
height:100px;
}
#header h2 {
color:#aaa;
cursor:default;
font:bold 25px georgia,Helvetica,sans-serif;
margin:0 0 0 40px;}
.main {border:silver solid;border-width:0 1px;}
.main,.center,.left {overflow:hidden;zoom:1;}
.wrap,.center {background:#fff;width:100%;}
.wrap,.left {float:right;margin-bottom:-32767px;padding-bottom:32767px;}
.center {padding-top:500px;}
.content {margin-top:-500px;padding-left:200px;zoom:1;}
*html .content {float:left;}
.left {
background:url(../i/left.gif) repeat-y #fbfbfb;
margin-right:-200px;
width:200px;}
.footer {
background-color:#fbfbfb;
border:silver 1px solid;
clear:both;
padding:5px 0;
position:relative;
text-align:center;
height:28px;
}
/* start banner */
.boxleft{background:#ddd;color:#000;position:absolute;left:4px;top:4px;width:88px;height:31px;}
.boxright{background:#ddd;color:#000;position:absolute;right:4px;top:4px;width:88px;height:31px;}
.boxleft1 {background:#eee;color:#000;position:absolute;left:94px;top:4px;width:88px;height:31px;}
.boxright1 {background:#eee;color:#000;position:absolute;right:94px;top:4px;width:88px;height:31px;}
/* end banner */
.tmenu {
background-color:#f9f9f9;
border:silver 1px solid;
padding:8px 0;
text-align:center;
height:16px;
}
p {margin:3px 10px;text-indent:1em;}
При внимательном изучении стилей вы не увидите упоминания об max/min-width и min-height. Хотя для тех, кто понимает можно было бы отдать эти правила, но это привело бы к проблеме более точного подбора размеров, что не оправданно трудоемко, о чем справедливо было замеченно в комментариях к одному из ранее опубликованных материалов. Поэтому все решено в едином ключе.
Используя стилевые правила для body мы экономим один контейнер. При переходе от одного вида центральной части к другой, данные стилевые правила представляются своими классами с дальнейшим наследованием необходимых классов с соответствующим изменением параметров для того или иного варианта.
body и блок с идентификатором trifler организуют необходимую нам эмуляцию max/min-width, выделено синим.
Реализация min-height осуществляется указанием стилевых правил классам: center и content, выделены зеленым.
*html .content - параметр выделен красным цветом, стилевое правило для IE6, без его указания эмуляция min-height в этом браузере не работает.
Все остальное относится к макету шаблона и не должно вызывать не преодолимых препятствий в понимании - что, как и зачем :)
html
<body>
<div id="trifler">
<div id="header"><h2>HEADER</h2></div>
<div class="tmenu">Горизонтальное меню</div>
<div class="main">
<div class="wrap">
<div class="center">
<div class="content">
<p>CONTENT</p>
</div>
</div>
</div>
<div class="left">
<p>LEFT</p>
</div>
</div>
<div class="footer">
<div class="boxleft">box Left<br>Счетчик</div>
<div class="boxleft1">box Left1<br>Баннер</div>
FOOTER
<div class="boxright">box Richt<br>Баннер</div>
<div class="boxright1">box Richt1<br>Счетчик</div>
</div>
</div>
</body>
Все предложенное работает в FF2.0.11, OPERA9.23, IE6(7). Хотелось бы написать и в Safari303beta/WIN, но воздержусь, там через раз, видимо интеграция в OC пока подводит :)
К достоинствам шаблона можно отнести, его хорошую повторяемость и устойчивость, все, что будет шире области контента при установленном вами min-width - фото, графика, блоки с фиксированной шириной более 500px, как в данном случае, безжалостно обрезаются. Нет переноса колонок при уменьшении размеров окна браузера по горизонтали. Присутствует иллюзия одинаковой высоты колонок – независимо от наполнения любой из них, border разделяющий колонки, просто background-color: или фон пущенный графикой - всегда растягивается до высоты самой высокой колонки.
Проблема footer-а, который всегда внизу не рассматривается, высказывался по этому поводу, ничего принципиально не изменилось :)
Все выявленные вами недостатки, вы можете осветить в комментариях. Критика в любом случае приветствуется, но строго по теме. Все, что не имеет отношения к данной статье, опубликовано не будет.
Горизонтальный banner counters.php - width:494px;
| декабрь, 2007 | ||||||
| пн | вт | ср | чт | пт | сб | вс |
| 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 | ||||||