На этой странице:
Построим страницу с двумя колонками, заголовочной частью и подвалом.
|
|
Сверху расположим блок
Ниже — две колонки: левая
(
В самом низу — область, содержащую сведения об авторе и
контактную информацию ( |
Кажется, что реализация этого макета мало чем отличается от реализации макета примера 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; /* Цвет текста */
}
|
|
Пример построен. Напомним ограничение используемой модели: предполагается, что содержимое боковой панели короче блока с основным содержанием.
Если это не
так, боковая панель перекроет подвал и даже может вылезти вниз за пределы
|