На этой странице:
Построим страницу о Роботландии с двумя плавающими колонками фиксированной ширины, заголовочной частью и подвалом (ссылка).
|
Сверху расположим блок
Ниже — две колонки: левая
(
В самом низу — область, содержащую сведения об авторе и
контактную информацию ( |
Запишем скелет 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="wrapper"> <!-- Оболочка для ложных колонок --> <DIV id="content">Содержание</DIV> <HR class="none"> <DIV id="sidebar">Боковая панель</DIV> </DIV> <!-- Конец оболочки wrapper --> <HR class="none"> <DIV id="footer">Подвал</DIV> </BODY> </HTML>
|
Так это выглядит без CSS. Горизонтальные линии введены для браузеров, которые CSS не поддерживают — они разделяют страницу на логические части.
Для класса |
|
Определим для
Для блока
Получается:
|
В соответствие с разметкой построим набор CSS-определений:
HTML { text-align:center; /* Центрирование BODY для IE5 */ background:#e5e5e5; } BODY { /* Раскладка */ margin:10px auto; /* BODY по центру HTML */ text-align: left; /* Выравнивание текста слева */ border:1px solid #638F7B; width:760px; /* Для старых хороших браузеров */ \width:762px; /* Обман для IE5 */ w\idth:760px; /* Для новых хороших браузеров */ /* Шрифты */ font:small Georgia, serif; /* Цвета */ color:black; background:white; } /* Заголовочная часть*/ H1 { } /* Оболочка для содержания и боковой панели */ #wrapper { } /* Общие свойства блока содержания и боковой панели */ #content, #sidebar { padding:10px; } /* Содержание */ #content { float:left; width:470px; /* Для старых хороших браузеров */ \width:490px; /* Обман для IE5 */ w\idth:470px; /* Для новых хороших браузеров */ } /* Боковая панель*/ #sidebar { float:left; width:250px; /* Для старых хороших браузеров */ \width:270px; /* Обман для IE5 */ w\idth:250px; /* Для новых хороших браузеров */ } /* Подвал */ #footer { clear:both; padding:0 10px 2px; white-space:nowrap; color:white; background:#090; font:0.8em "Trebuchet MS",sans-serif; } /* Для устранения элементов при включённом CSS */ .none {display:none;}
|
Так это выглядит в окне шириной 800 пикселов. |
|
А так — в более широких окнах. Вся композиция расположена
внутри |
Всё хорошо, но если вы смотрите в IE-6, то видите мягкий знак справа выше подвала. Не протирайте глаза, не пытайтесь найти мягкий знак, случайно оброненный в HTML, — это очередной, хорошо известный баг IE.
Этот баг, известный под названием “ошибка дублирования символов браузерами IE6”, проявляется, когда между первым и последним плавающими элементами в HTML есть комментарии. У нас комментарии расположены в других местах:
<BODY bgcolor="white" text="black"> <H1>Роботландия</H1> <HR class="none"> <DIV id="wrapper"> <!-- Оболочка для ложных колонок --> <DIV id="content">Содержание</DIV> <HR class="none"> <DIV id="sidebar">Боковая панель</DIV> </DIV> <!-- Конец оболочки wrapper --> <HR class="none"> <DIV id="footer">Подвал</DIV> </BODY> </HTML>
Пробуем комментарии убрать — не помогает, мягкий знак в IE-6 упорно отображается на экране. Ладно, оставим решение этой проблемы на потом.
Зафиксируем размер шрифта и высоту строки в пикселах. Отодвинем текст заголовка левым внутренним отступом размером в 150 пикселов. В освободившееся пространство поместим логотип в виде фоновой картинки (без укладки паркета):
H1 { background:#fbe7ae url(pic/logo.png) no-repeat; color:#090; margin:0;padding:0; padding-left:150px; font:bold 80px Georgia,serif; line-height:110px; border-bottom:1px solid #638F7B; }
Фоновая картинка:
Картинка сохранялась с фона того же цвета, что и на заголовке. |
Вертикальный размер блока
Размер шрифта на 30 пикселов
меньше высоты блока:
Заголовок находится в потоке, а два плавающих блока
(
Подвал будет располагаться ниже плавающих блоков, так как для него
задано |
Наполним страницу реальным содержимым и опишем дополнительные оформительские стили.
|
/* Приближаем заголовок к своему абзацу */ 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); } |
Если нужно написать правило только для IE, записывайте
две косых черты |
Мягкий знак пропал, но возникла новая проблема. И снова в IE: фон подвала расширяется вверх, если подёргать линейку прокрутки в нижней части или перекрыть окно другим окном. Вылечивается установкой нулевой высоты (реально высота в IE будет устанавливаться по содержимому):
#footer
{
clear:both;
padding:0 10px 2px;
white-space:nowrap;
color:white;
background:#090;
font:0.8em "Trebuchet MS",sans-serif;
//height:0; /* Заклинание для IE */
}
Две косых черты |
Эту картинку будем использовать для создания ложной колонки
блока |
Фон |
Картинкой будем замащивать справа по вертикали
оболочку колонок, блок wrapper
:
/* Оболочка для содержания и боковой панели */ #wrapper { float:left; background:url(pic/bg.png) right repeat-y; }
Указание float:left
необходимо. Если его опустить, блок
wrapper
окажется пустым (ссылка).
|
Пример построен. В макете с плавающими колонками нет ограничений на соотношение высот. Любая колонка может быть короче или длиннее соседа, или иметь равную с ним высоту. |