На этой странице:
Построим страницу с двумя колонками, заголовочной частью и подвалом.
|
Сверху расположим блок
Ниже — две колонки: левая
(
В самом низу — область, содержащую сведения об авторе и
контактную информацию ( |
Кажется, что реализация этого макета мало чем отличается от реализации макета примера 1 — всего лишь добавлен один блок в самом низу страницы.
Однако, наличие подвала создаёт непреодолимую трудность. В примере 1
все блоки были абсолютно позиционированы, то есть, удалены из потока
(блок BODY
оказался пустым). В рамках этой модели
для блока footer
нужно задать вертикальную координату, но она
зависит от высоты блока content
(или sidebar
,
смотря что больше) которая нам неизвестна.
Придётся изменить модель вёрстки.
|
Все блоки, кроме Подвал будет расположен в потоке сразу за содержанием. Правда, если высота боковой панели окажется больше высоты содержания, то боковая панель перекроет подвал. Будем считать, что на нашей странице такого не произойдёт. |
Запишем HTML-код будущей страницы (предполагаем, что страница будет о Роботландии):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML lang="ru"> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=windows-1251"> <LINK rel="stylesheet" type="text/css" href="main.css"> <TITLE>Роботландия</TITLE> </HEAD> <BODY bgcolor="white" text="black"> <H1>Роботландия</H1> <HR class="none"> <DIV id="content">Содержание</DIV> <HR class="none"> <DIV id="sidebar">Боковая панель</DIV> <HR class="none"> <DIV id="footer">Подвал</DIV> </BODY> </HTML>
|
Так это выглядит без CSS. Горизонтальные линии введены для браузеров, которые CSS не поддерживают — они разделяют страницу на логические части.
Для класса |
|
Все блоки, кроме
Для блока |
В соответствие с разметкой построим набор CSS-определений:
HTML { text-align:center; /* Центрирование BODY для IE5 */ background:#f3f8f6; /* Фон документа */ } BODY { position:relative; /* Будем позиционировать от BODY */ margin: 10px auto; /* BODY по центру HTML */ padding:0; /* Уберём внутренний отступ */ text-align: left; /* Выравнивание текста слева */ border:1px solid #638F7B; /* Рамка для страницы */ width:760px; /* Определим ширину */ font:small Georgia, serif; /* Шрифт */ background:white; /* Цвет фона */ color: #2A3D34; /* Цвет текста */ } /* Заголовок */ H1 { background:#007143; color:white; margin:0;padding:0; padding-left:180px; font:bold 70px Georgia,serif; letter-spacing:2px; line-height:110px; } /* Содержание */ #content { margin-right:270px; padding:10px; } /* Боковая панель*/ #sidebar { position:absolute; left:490px; top:110px; /* Отсчёт от BODY */ padding:10px; width:250px; /* Для хороших старых по стандарту */ \width:270px; /* Обман для IE5 */ w\idth:250px; /* Для всех новых хороших по стандарту */ background:#ffec73; } /* Подвал */ #footer { padding:5px 10px; border-top:1px solid #638F7B; white-space:nowrap; font:0.7em Tahoma,sans-serif; color:white; background:#828377; } /* Для устранения элементов при включённом CSS */ .none {display:none;}
|
Так это выглядит в окне шириной 800 пикселов. |
|
А так — в более широких окнах. Вся композиция расположена
внутри Если вы забыли, как выполняется центрирование блоков, посмотрите раздел горизонтальное форматирование. |
В блоке H1
задан левый внутренний отступ
размером в 180 пикселов. В это пространство поместим
логотип в виде фоновой картинки (без укладки паркета):
H1
{
background:#007143 url(pic/logo.png) no-repeat -60px -62px;
color:white;
margin:0;padding:0;
padding-left:180px;
font:bold 70px Georgia,serif;
letter-spacing:2px;
line-height:110px;
}
Фоновая картинка:
Для фоновой картинки заданы отрицательные координаты, поэтому она видна не полностью (так задумано). |
Вертикальный размер блока
Размер шрифта на 40 пикселов
меньше высоты блока:
Для абсолютно позиционированного блока Текст заголовка записан выверткой — светлые буквы на тёмном фоне. |
Наполним страницу реальным содержимым и опишем дополнительные оформительские стили.
|
/* Приближаем заголовок к своему абзацу */ H2, H3, H4, H5, H6 {margin-bottom:0.2em;} P {margin:0.2em 0 1em;} /* Размеры заголовков */ H2 {font-size:1.4em;} H3 {font-size:1.2em;} /* Выделение */ EM {font-weight:bold;} /* Рисованный маркер списка */ UL LI { list-style-image:url(pic/marker.gif); } |
Получилось неплохо, кроме одной неприятности: на страницу с колонками это не похоже — колонки по определению должны иметь одинаковую высоту!
Проблема имеет решение под названием
“ложные колонки”. Оно было описано Дэном
Седерхольмом (Dan Cederholm) в статье
“Faux Columns”
|
Суть метода в следующем: для контейнера колонок (в нашем случае
для |
Подготовим фоновое изображение и подправим стилевое определение для
BODY
:
BODY
{
position:relative; /* Будем позиционировать от BODY */
margin: 10px auto; /* BODY по центру HTML */
padding:0; /* Уберём внутренний отступ */
text-align: left; /* Выравнивание текста слева */
border: 1px solid #638F7B; /* Рамка для страницы */
width:760px; /* Определим ширину */
font:small Georgia, serif; /* Шрифт */
background:white url(pic/fon.png) repeat-y;
color: #2A3D34; /* Цвет текста */
}
|
Пример построен. Напомним ограничение используемой модели: предполагается, что содержимое боковой панели короче блока с основным содержанием.
Если это не
так, боковая панель перекроет подвал и даже может вылезти вниз за пределы
|