Конструкторы гипертекстовых страниц используют таблицы для вёрстки материала, хотя с развитием CSS табличная вёрстка уходит в прошлое. В этом разделе будут продемонстрированы дизайнерские приёмы, основанные на HTML-таблицах.
На этой странице:
Построим заголовочную часть, состоящую из трёх элементов:
Зададимся целью построить “резиновый” заголовок, то есть такой, который бы подстраивался под текущую ширину окна, сохраняя запланированные типы выравнивания своих элементов:
Исходный материал — три картинки:
Поместим эти изображения в таблицу, состоящую из одной строки с тремя ячейками:
Для таблицы укажем следующие атрибуты:
Атрибут | Комментарий |
---|---|
border=0 |
Отключаем показ табличных границ |
cellspacing=0 |
Убираем все отступы |
width=100% |
Растягиваем таблицу на всю ширину окна |
Для ячеек зададим атрибуты:
Атрибут | (1,1) | (1,2) | (1,3) | Комментарий |
---|---|---|---|---|
align |
left |
center |
right |
В первой — слева, в последней — справа, в средней — по центру. |
valign |
— | middle |
— | В средней — центрирование по вертикали. |
width |
94 |
— | 94 |
Для первой ячейки укажем ширину, равную ширине картинки, которая в ней находится. Также поступим с последней ячейкой. Для средней ячейки ширину не задаём — она и будет “резиновой”. |
Для рисунка-заголовка укажем отступ по горизонтали в 10 пикселов
(hspace=10
), чтобы картинки не
смыкались в узких окнах.
Откройте окно построенного примера и проверьте “резиновые” свойства заголовочной части, меняя размеры окна:
<!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">
<TITLE>Заголовок страницы</TITLE>
</HEAD>
<BODY bgcolor=white text=black>
<!-- Заголовочная часть сайта-->
<TABLE border=0 cellspacing=0 cellpadding=0 width="100%">
<TR>
<TD width=94 align=left>
<IMG src="pic/coc.gif" width=94 height=91
border=0 hspace=0 vspace=0
alt="Логотип" title="На начало сайта">
</TD>
<TD valign=middle align=center>
<IMG src="pic/title.png"
width=390 height=42 border=0
hspace=10 vspace=0
alt='Турниры Роботландии'
title='Турниры Роботландии'>
</TD>
<TD width=94 align=right>
<IMG src="pic/kor.png"
width=94 height=91 border=0
hspace=0 vspace=0 alt="">
</TD>
</TR>
</TABLE>
<HR size=1 noshade>
<H2>Заголовок страницы</H2>
<P>
Содержание страницы
</BODY>
</HTML>
Спроектируем страницу, макет которой показан на рисунке:
Построим таблицу, имеющую подобную структуру:
Логотип | Заголовок | |
Меню | Основное содержимое | Новости |
Автор |
Код этой таблицы:
<TABLE border=1 cellspacing=0>
<TR>
<TD>
Логотип
</TD>
<TD colspan=2>
Заголовок
</TD>
</TR>
<TR>
<TD rowspan=2>
Меню
</TD>
<TD>
Основное содержимое
</TD>
<TD>
Новости
</TD>
</TR>
<TR>
<TD colspan=2>
Автор
</TD>
</TR>
</TABLE>
Остаётся назначить классы, определить стили и наполнить страницу содержимым. Можно, например, получить такую страницу:
Коды этой страницы:
CSS
BODY
{
margin:0; padding:0;
font: small Georgia, serif;
}
H1,H2,H3,H4
{
color: #e5e5e5;
background:#4d4d4d;
padding:5px;
clear:both;
}
.picleft
{
float:left;
margin: 0 10px 10px 0;
}
A {text-decoration: none;}
A:link {color:blue;}
A:active {color:red;}
A:visited {color:purple;}
A:hover
{
color:white;
background: #ff7f00;
}
/* Табличный макет верстки
----------------------- */
TABLE.maket
{
background:#edf7fb;
border:1px solid black;
}
TABLE.maket TD
{
text-align:left;
vertical-align:top;
padding:10px;
}
/* Логотип */
TABLE.maket TD.logo
{
border-right:1px solid black;
width:100px;
height:98px;
background:#ffe3cc;
text-align:right;
}
/* Заголовок */
TABLE.maket TD.title
{
border-bottom:1px solid black;
vertical-align:middle;
background:white;
}
/* Меню */
TABLE.maket TD.menu
{
border-right: 1px solid black;
font: 18px Arial,sans-serif;
text-align:right;
background:#ffe3cc;
}
TABLE.maket TD.menu UL
{
margin:0; /* удалим списочный отступ */
list-style:none; /* запретим показывать маркер*/
white-space:nowrap; /* запретим переносить строку*/
}
/* Новости */
TABLE.maket TD.news
{
border-left: 1px solid black;
background:#e5e5e5;
width:30%;
}
/* Подвал с авторской информацией */
TABLE.maket TD.author
{
border-top: 1px solid black;
background:#ffbf00;
font: 80% Arial,sans-serif;
white-space:nowrap;
}
HTML
<TABLE class=maket cellspacing=0>
<TR>
<TD class=logo>
<!-- Логотип -->
</TD>
<TD class=title colspan=2>
<!-- Заголовок -->
</TD>
</TR>
<TR>
<TD class=menu rowspan=2>
<!-- Меню -->
<UL>
<LI>начало
<LI><A href="book01.htm">книга 01</A>
<LI><A href="book02.htm">книга 02</A>
<LI><A href="book03.htm">книга 03</A>
<LI><A href="book04.htm">книга 04</A>
<LI><A href="book05.htm">книга 05</A>
<LI><A href="book06.htm">книга 06</A>
<LI><A href="book07.htm">книга 07</A>
<LI><A href="book08.htm">книга 08</A>
<LI><A href="book09.htm">книга 09</A>
<LI><A href="book10.htm">книга 10</A>
</UL>
</TD>
<TD>
<!--Основное содержимое -->
</TD>
<TD class=news>
<!-- Новости -->
</TD>
</TR>
</TABLE>
Распорка (GIF, содержащий одну прозрачную точку) довольно часто используется в качестве инструмента дизайнера. “Растягивая” точку до прямоугольника нужных размеров, можно придать “жёсткость” проектируемым областям, не позволяя им уменьшаться вслед за уменьшением окна браузера.
Покажем метод использования распорок на примере. Пусть нужно создать страницу по следующему макету:
Решение без распорок:
<TABLE border=0 cellspacing=0 cellpadding=10 width="100%">
<TR>
<TD width=100 bgcolor="#ffe3cc"> </TD>
<TD>
<DIV style="text-align:center">
<IMG src="pic/1338.gif"
width=287 height=37 border=0
alt='Заголовок сайта'
title='Заголовок сайта'>
</DIV>
<HR size=1 noshade>
<P>
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст.
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст.
Текст. Текст. Текст. Текст.
</TD>
<TD width=100 bgcolor="#ffe3cc"> </TD>
</TR>
</TABLE>
Обратите внимание: при уменьшении ширины окна поля начинают уменьшаться,
несмотря на то, что в ячейках, которые их задают, прописано указание
width=100
.
Распорки помогут исправить ситуацию:
<TABLE border=0 cellspacing=0 cellpadding=10 width="100%">
<TR>
<TD width=100 bgcolor="#ffe3cc"
><IMG src="pic/empty.gif"
width=100 height=1 alt=""></TD>
<TD>
<DIV style="text-align:center">
<IMG src="pic/1338.gif"
width=287 height=37 border=0
alt='Заголовок сайта'
title='Заголовок сайта'>
</DIV>
<HR size=1 noshade>
<P>
Текст. Текст. Текст. Текст. Текст. Текст. Текст.
Текст. Текст. Текст. Текст. Текст. Текст. Текст.
Текст. Текст. Текст. Текст. Текст. Текст.
</TD>
<TD width=100 bgcolor="#ffe3cc"
><IMG src="pic/empty.gif"
width=100 height=1 alt=""></TD>
</TR>
</TABLE>
Теперь, при уменьшении окна, браузер включит линейку прокрутки, но не изменит заданную ширину полей.
Простейшую рамку можно получить, поместив картинку в табличную ячейку:
![]() |
Код этой таблицы:
<TABLE width=140 height=101 border=1
cellspacing=0 cellpadding=0>
<TR>
<TD><IMG src="pic/1289.gif"
width=140 height=101 border=0 hspace=0 vspace=0
alt="Задумчивый портрет"
title="Задумчивый портрет"></TD>
</TR>
</TABLE>
Обратите внимание, код элемента IMG
плотно прилегает (без пробелов и концов строки) к коду
табличной ячейки. А если записать код с пробелами?
<TABLE width=140 height=101 border=1
cellspacing=0 cellpadding=0>
<TR>
<TD>
<IMG src="pic/1289.gif"
width=140 height=101 border=0 hspace=0 vspace=0
alt="Задумчивый портрет"
title="Задумчивый портрет">
</TD>
</TR>
</TABLE>
Это приведёт к неплотному прилеганию картинки к границам ячейки (в браузере IE):
![]() |
Сконструируем паспарту с подписью (справа показана структура таблицы, в которую погружена картинка и подпись):
|
|
Код таблицы с картинкой:
<TABLE style="border:5px ridge #ccbbaa" width=140
cellspacing=20 cellpadding=0 bgcolor="#e5e5e5">
<TR>
<TD><IMG src="pic/1289.gif"
width=140 height=101 border=1
hspace=0 vspace=0
alt="Задумчивый портрет"
title="Задумчивый портрет"></TD>
</TR>
<TR align=center valign=middle>
<TD>Задумчивый портрет</TD>
</TR>
</TABLE>
Теперь построим декоративную рамку, которую можно использовать для обрамления картинок или для обрамления других объектов на гипертекстовой странице.
Сначала нарисуем рамку в графическом редакторе:
При помощи подходящего средства (например, в программе Adobe ImageReady) вырежем из рисунка “кирпичики”, которые будем использовать для построения рамки произвольного размера:
Полученные заготовки будут фоновыми картинками в соответствующих ячейках таблицы размером 3×3. Саму картинку будем располагать в центральной ячейке (2,2), а подпись в ячейке (3,2):
Реализуя задуманное, получим следующее оформление для картинки:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Задумчивый портрет |
![]() |
Код этого примера:
<TABLE border=0 cellspacing=0 cellpadding=0 bgcolor="#e5e5e5">
<TR>
<TD style="background:no-repeat url(pic/frame11.gif)"
width=57 height=62>
<IMG src="pic/empty.gif" width=57 height=62 border=0
hspace=0 vspace=0 alt=""></TD>
<TD style="background:repeat-x url(pic/frame12.gif)">
<IMG src="pic/empty.gif" width=1 height=62 border=0
hspace=0 vspace=0 alt=""></TD>
<TD style="background: no-repeat url(pic/frame13.gif)"
width=68 height=62>
<IMG src="pic/empty.gif" width=68 height=62 border=0
hspace=0 vspace=0 alt=""></TD>
</TR>
<TR>
<TD style="background: repeat-y url(pic/frame21.gif)">
<IMG src="pic/empty.gif" width=57 height=1 border=0
hspace=0 vspace=0 alt=""></TD>
<TD align=center valign=middle>
<IMG src="pic/1289.gif" width=140 height=101 border=1
hspace=0 vspace=0
alt="Задумчивый портрет"
title="Задумчивый портрет">
</TD>
<TD style="background: repeat-y url(pic/frame23.gif)">
<IMG src="pic/empty.gif" width=68 height=1 border=0
hspace=0 vspace=0 alt=""></TD>
</TR>
<TR>
<TD style="background: no-repeat url(pic/frame31.gif)"
width=57 height=72>
<IMG src="pic/empty.gif" width=57 height=72 border=0
hspace=0 vspace=0 alt=""></TD>
<TD style="background: repeat-x url(pic/frame32.gif); /
font:70% Arial,sans-serif"
align=center valign=middle>
Задумчивый портрет
</TD>
<TD style="background: no-repeat url(pic/frame33.gif)"
width=68 height=72>
<IMG src="pic/empty.gif" width=68 height=72 border=0
hspace=0 vspace=0 alt=""></TD>
</TR>
</TABLE>
В пустых ячейках используется распорка (empty.gif
).
Пустой ячейку оставлять нельзя — не все браузеры правильно
показывают таблицу с пустыми клетками.
Использовать неразрывный пробел (
) тоже нельзя —
при увеличении размера шрифта, размеры пробела также будут увеличиваться, и это
может привести к появлению разрывов в рамке.
Заготовку легко использовать многократно, например, поместить в неё другую картинку:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Вася Кук изучает информатику |
![]() |
Рамку можно использовать в качестве врезки для размещения в ней различных материалов:
![]() |
Азы информатики |
![]() |
![]() |
![]()
Автор курса — Александр Александрович
Дуванов. Он же автор электронной компоненты курса.
|
![]() |
![]() |
kurs@robotland.pereslavl.botik.ru |
![]() |
О преимуществах разрезанной картинки говорилось в уроке 12.
Пусть на страницу нужно вывести следующее изображение:
Оптимизация приводит к следующему результату: в форматах GIF и PNG-8 качество получается плохим. Размер файла в формате PNG-24 (сжатие без потерь) — 83 килобайта. Оптимизация в формате JPEG приводит к приемлемому результату по качеству при файле размером в 52 килобайта.
Но даже объём в 52 килобайта великоват для Web.
Разрежем картинку на четыре части:
Оптимизация частей приводит к неплохому результату — сокращению общего размера до 29 килобайт (уменьшение на 44 %):
Фрагмент | Формат | Размер |
---|---|---|
img11 | GIF | 1 004 КБ |
img12 | PNG | 14 808 КБ |
img21 | JPEG | 7 801 КБ |
img22 | GIF | 5755 КБ |
Итого | 29 368 КБ |
Для отображения картинки погрузим её части в таблицу 3×3 (ячейки, которые предстоит объединить, выделены цветом):
Последний столбец — вспомогательный. Без него браузерам будет трудно построить таблицу, в которой нет ни одного “нормального” столбца на три ячейки.
В каждую ячейку последнего столбца поместим картинку-распорку шириной в 1 пиксел.
Если вы уже забыли, то распорка — это прозрачное GIF-изображение
размером 1×1 пиксел. То есть в этой картинке всего один пиксел, и
он — прозрачный.
Используя размерные атрибуты элемента IMG
, эту картинку можно
растянуть по горизонтали и вертикали до нужных размеров. Например,
тег
<IMG src="pic/empty.gif" width=200 height=200
border=0 hspace=0 vspace=0 alt="">
задаёт на экране квадрат со стороной 200 пикселов (файл
empty.gif
— распорка). Понятно, что этот
квадрат, да и любой другой прямоугольник, построенный на экране при
помощи картинки empty.gif
, пользователь не увидит —
ведь размерные атрибуты “растягивают” прозрачную точку!
Результат работы представлен ниже:
<TABLE width=401 height=300
border=0 cellspacing=0 cellpadding=0>
<TR>
<TD
><IMG src="pic/img11.gif"
width=140 height=124
border=0 hspace=0 vspace=0
alt="Козлёнок" title="Козлёнок"></TD>
<TD rowspan=2
><IMG src="pic/img12.png"
width=260 height=183
border=0 hspace=0 vspace=0
alt="Козлёнок" title="Козлёнок"></TD>
<TD
><IMG src="pic/empty.gif" width=1
height=124 alt=""></TD>
</TR>
<TR>
<TD rowspan=2
><IMG src="pic/img21.jpg"
width=140 height=176
border=0 hspace=0 vspace=0
alt="Козлёнок" title="Козлёнок"></TD>
<TD
><IMG src="pic/empty.gif"
width=1 height=59 alt=""></TD>
</TR>
<TR>
<TD rowspan=2
><IMG src="pic/img22.gif"
width=260 height=117
border=0 hspace=0 vspace=0
alt="Козлёнок" title="Козлёнок"></TD>
<TD
><IMG src="pic/empty.gif"
width=1 height=117 alt=""></TD>
</TR>
</TABLE>
Отметим важные моменты в этом коде.
empty.gif
.
IMG
примыкают к границам кода ячеек
без пробелов и концов строк — чтобы в ячейке не появились
ненужные промежутки.
При разрезании исходной картинки в программе Adobe
ImageReady, генерируется автоматический HTML-код, подобный приведённому
выше, в качестве распорки указывается файл spacer.gif