[Nevor.ru]

   •Главная•   •Поиск•   •Новости•   •Гостевая•   •Карта•  
•Главная•   •Поиск•   •Новости•   •Гостевая•   •Карта•  
Любимов Павел 2008-2012. © (написать письмо).
Навигация
по сайту
Компьютеры
Программы
Сайты
Прочее
На главную
Гостевая
Новости
Статьи
Список статей
по теме
Содержание
раздела
Предисловие
Введение
Программы
Код HTML
Использование
спецификации
Термины
Код CSS
Использование
спецификации
Код PHP
Структура
html-документа
Технические
моменты
Верстка сайта
Виды вёрстки
Поиск ошибок
Системы CMS

Табличная и блочная верстка.

редакция 06.06.10

Сайту в большинстве случаев необходим каркас. Нечто вроде полок, на которых вы разложите всю свою информацию, текст, картинки и прочие объекты. В сети можно встретить несколько прилагательных, употребляющихся со словом верстка: "дивная", табличная, семантическая, блочная... стоит обратить внимание на блочную (она же "дивная"(от названия контейнера <DIV>) и табличную (<TABLE>) верстки. Сюда же можно добавить верстку сайта с помощью фреймов. Поскольку фреймы, как я уже неоднократно говорил ранее, разговор отдельный, то затрагивать данный тип верстки я сейчас не буду. Семантическая - это извращенная философия (мое личное мнение) о правильности верстки сайта, а не его практическая реализация. Поэтому расскажу о реализации табличной и блочной верстки на практике.

Таблица содержит в себе следующие конструктивные элементы:

<THEAD> - группа рядов верха
<TFOOT> - группа рядов низа
<TBODY> - группы рядов центра
<CAPTION> - заголовок таблицы
<COL> - столбец таблицы
<COLGROUP> - группа столбцов
<TR> - ряд ячеек таблицы
<TH> - ячейка заголовка столбца
<TD> - ячейка таблицы

Каркас из таблицы строится следующим образом:

каркас

Код этого примера следующий:

 ...<STYLE>
TD.border {border:solid blue 4px; font-weight:bold;}
TABLE.border {border:solid red 4px}
</STYLE></HEAD>
<BODY>
<TABLE width="100%" height="100%" class="border">
<THEAD><TR>
<TD width="30%" height="100" class="border" align="center">
T H E A D
</TD>
<TD width="40%" class="border" align="center">
T H E A D
</TD>
<TD width="30%" class="border"align="center">
T H E A D
</TD>
</TR></THEAD>

<TFOOT><TR>
<TD width="100%" height="100" class="border"
align="center" colspan="3" >
T F O O T
</TD>
</TR></TFOOT>

<TBODY><TR>
<TD class="border" align="center">
T B O D Y
</TD>
<TD class="border" colspan="3" align="center">
T B O D Y
</TD></TR></TBODY>
</TABLE></BODY></HTML>

А вот что получается в результате выполнения кода:

каркас сайта

<TFOOT> должен следовать за <THEAD> и лишь потом идет <TBODY>, потому что обозреватель сначала рассчитывает размер верхнего и нижнего блока сайта, а все оставшееся пространство идет под контейнер <TBODY>. Обратите внимание на атрибут "height" контейнера <TABLE>. Согласно спецификации такого атрибута таблица не имеет, он есть только у ячеек. Однако в ячейках он не срабатывает и высота ячейки привязана к высоте ее содержимого. Поэтому приходится использовать этот несуществующий атрибут, чтобы растянуть таблицу на всю область просмотра.

Также обратите внимание на атрибут "colspan". Максимальное число ячеек в этой таблице равно трем (верхний блок). Средний и нижний блоки имеют две и одну ячейку соответственно. Атрибут "colspan", суммирует ширину ячеек. Подробнее об этом и об элементах таблицы читайте тут.

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

table'тный ёжик
table'тный ёжик

Блочная (div'ная) вёрстка.

Теперь поговорим о блочной верстке. С блоками все немного сложнее, поскольку каждый из них по отдельности является независимым объектом, а не частью. Поэтому блоки "DIV" очень любят "потолкаться", "наезжать" и "разъезжаться". Если не ставить их "впритирку", использовать одинаковые фоновые цвета для фона документа и блока или не использовать фон у блоков вообще, а также не использовать рамки, то проблем почти не возникает. А вот сделать что-то подобное верхнему примеру уже проблематично. По крайней мере новичку. В отличие от ячеек, блоки запросто могут наложиться друг на друга, если им вдруг станет тесно. Или не поделят расстояние в пару пикселей из-за использования рамок и разъедутся вверх-вниз, хотя должны находиться на одной линии. Простое желание пользователя увеличить шрифт для удобства чтения может обернуться катастрофой. Отмечу, что и блочную и табличную верстку применять целесообразно, все зависит от поставленной цели и области их применения. И не слушайте никого, кто говорит что блочная верстка это панацея, а табличная безнадежно устарела. Прочих колдунов, сыплющих заклинаниями семантика и семантическая вообще вышвыривайте в окно. Ниже я приведу пример использования блочной верстки.

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

 ...<STYLE type="text/css">
BODY,HTML {margin:0; padding:0;}
BODY {min-width:750px;}
#main {background:#D27026; margin:0 auto; width:750px;}
#header {background:#99ABE8;}
H1,H2 {margin:0; padding:5px;}
#navigate {background:white; padding:5px;}
#content {background:#00793D; float:left; width:80%;
font-weight:bold; color:white;}
#menu {background:#D27026; float:right;
width:20%; font-weight:bold; color:white;}
#footer {background:#cc9; clear:both;}
</STYLE></HEAD>
<BODY>

<DIV id="main">

<DIV id="header" align="center"><H1>В Е Р Х</H1></DIV>

<DIV id="navigate" align="center">н а в и г а ц и я</DIV>

<DIV id="content" align="center">
<H2>И Н Ф О Р М А Ц И Я</H2>
<P>
***<BR>***<BR>***<BR>
***<BR>***<BR>***<BR>***
</P>
</DIV>

<DIV id="menu" align="center">боковое<BR>меню</DIV>

<DIV id="footer" align="center"><H1>Н И З</H1></DIV>

</DIV> <!-- закрывающий тег <DIV id="main"> -->

</BODY></HTML>

Это не так много, как мне хотелось бы написать, однако достаточно для того, чтобы вы могли создавать сайты сами. Опять же для наглядности можете посмотреть на шаблон "ёжик в тумане", свёрстанный уже при помощи блоков. Оценить удобство и отметить недостатки. Соотнести размеры и удобочитаемость кода обоих вариантов. Вот ссылка на блочный шаблон.

div'ный ёжик
div'ный ёжик

Следующая глава - последняя, в ней я поделюсь информацией о том, как искать и исправлять ошибки в коде. [наверх]

помочь автору и сайту

...отладка и оптимизация...


Информация
Спецификация
языка HTML
Спецификация
языка CSS
Файлы
Набор новичка
Шаблоны сайтов
Редактор кода
Тренер HTML
Denwer