В практике сайтостроения таблицы используют для создания полей, рамок, выравнивания объектов, многоколонной верстки, наложения картинок И, наконец, для отображения на экране, собственно, табличного материала!
Так было до недавнего времени. Сегодня web-конструкторы стараются использовать таблицы только по прямому назначению — для вёрстки табличных данных, а визуальные задачи решать средствами CSS. Но обо всем по порядку.
На этой странице:
TABLE
)
TABLE
TR
TD
и TН
CAPTION
Всем хорошо известна таблица умножения:
Она представляет собой прямоугольник, расчерченный на клетки. Вертикальные ряды клеток образуют столбцы, горизонтальные — строки. Каждая строка и столбец в таблице может иметь свой заголовок. Заголовки записываются в первой строке и первом столбце (вернее над первой строкой и слева от первого столбца содержимого таблицы).
Заголовками строк и столбцов в таблице умножения служат цифры от одного до девяти. Пользоваться таблицей очень просто. Если нужно узнать, например, результат умножения числа 6 на число 8, нужно прочитать ответ в клетке, расположенной на пересечении столбца с заголовком “6” и строки с заголовком “8”. Или в клетке, расположенной на пересечении строки с заголовком “6” и столбца с заголовком “8”. Всё равно, какой из вариантов выбрать, потому что 6×8=8×6. В обеих этих клетках находится число 48.
В общем случае таблицы используются для хранения информации с двумя характерными признаками. Значения одного признака размещают в заголовках строк, другого — в заголовках столбцов. А в каждую клетку таблицы заносят значение, одновременно обладающее признаком строки и столбца, на пересечении которых клетка расположена.
Для таблицы умножения признаками служат значения сомножителей. Первый признак — это значение первого сомножителя, второй — значение второго.
TABLE
)
Таблица задаётся элементом TABLE
, который описывается
парой тегов
<TABLE>...</TABLE>
.
Между этими тегами
задаются строки таблицы (пары тегов
<TR>...</TR>
).
Наконец, внутри строк задаются клетки (ячейки) таблицы (пары тегов
<TD>...</TD>
).
Таким вот образом, по строкам, описывается вся структура таблицы:
Пример задания таблицы, состоящей из трёх строк и двух столбцов:
<TABLE border=1>
<TR> <!-- Первая строка -->
<TD>(1,1)</TD> <!-- Первая ячейка -->
<TD>(1,2)</TD> <!-- Вторая ячейка -->
</TR>
<TR> <!-- Вторая строка -->
<TD>(2,1)</TD> <!-- Первая ячейка -->
<TD>(2,2)</TD> <!-- Вторая ячейка -->
</TR>
<TR> <!-- Третья строка -->
<TD>(3,1)</TD> <!-- Первая ячейка -->
<TD>(3,2)</TD> <!-- Вторая ячейка -->
</TR>
</TABLE>
На экране эта таблица отображается так:
(1,1) | (1,2) |
(2,1) | (2,2) |
(3,1) | (3,2) |
TABLE
Атрибуты элемента TABLE
описаны ниже.
Атрибут | Значение | Описание |
---|---|---|
align |
left , right , center |
Выравнивание таблицы по горизонтали. По умолчанию таблица выравнивается слева без обтекания её другими элементами. |
width |
Число или процент | Ширина таблицы. По умолчанию размер таблицы определяется содержимым и способом форматирования, заданным в ячейках. |
height |
Число или процент | Высота таблицы. По умолчанию размер таблицы определяется содержимым и способом форматирования, заданным в ячейках. |
cellpadding |
Число | Расстояние между содержимым ячейки и её рамкой. По умолчанию значение задаётся браузером, обычно 2. |
cellspacing |
Число | Расстояние между рамками ячеек таблицы. По умолчанию значение задаётся браузером, обычно 1. |
bgcolor |
Цвет | Цвет фона таблицы. По умолчанию фон прозрачный. |
background |
URL файла | Фоновая картинка |
border |
Число |
Толщина линий рамки. По умолчанию border=0 .
|
bordercolor |
Цвет |
Цвет линий рамки.
Если значение border отлично от нуля, то табличная рамка отображается
с эффектом трёхмерности. Добавление атрибута bordercolor обеспечивает
плоские рамки заданного цвета. |
align
Этот атрибут позволяет определять положение таблицы по отношению к соседним элементам документа.
<TABLE align=left> |
||||||
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. |
<TABLE align=right> |
||||||
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. |
<TABLE align=center> |
||||||
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст.
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. |
Если атрибут не задан, таблица выравнивается по левому краю окна, а другие элементы страницы располагаются выше или ниже (обтекания не происходит):
<TABLE> |
||||||
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст.
Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. Текст. |
Отметим, что обтекание, заданное атрибутом align
, как и для картинок,
прекращается элементом BR
с атрибутом clear
:
<BR clear=left> |
Прекращение обтекания справа |
<BR clear=right> |
Прекращение обтекания слева |
<BR clear=all> |
Прекращение обтекания с обеих сторон |
Выровнять таблицу по горизонтали без обтекания можно, используя
значение auto
стилевого свойства margin
(см. в теме 2 раздел
Горизонтальное форматирование).
Эта таблица
(1,1) | (1,2) |
(2,1) | (2,2) |
(3,1) | (3,2) |
выровнена по правому краю без обтекания при помощи кода:
<TABLE style="margin: 1em 0 1em auto" border=1>
...
</TABLE>
А эта таблица
(1,1) | (1,2) |
(2,1) | (2,2) |
(3,1) | (3,2) |
выровнена по центру при помощи кода:
<TABLE style="margin: 1em auto" border=1>
...
</TABLE>
width
height
Если эти атрибуты не заданы, браузер нарисует таблицу минимальных
размеров вокруг данных, которые она содержит. Записи
width=число
и height=число
заставляет браузер рисовать таблицу шириной и высотой в указанное количество
пикселов.
В стандарте W3C описан только атрибут width
, но современные
браузеры поддерживают и атрибут height
также.
cellpadding
и cellspacing
Атрибут cellpadding
задаёт расстояние между рамкой
(границей) ячейки и её содержимым, атрибут cellspacing
—
расстояние между рамками соседних ячеек. Если атрибуты не
заданы, браузер устанавливает эти расстояния по умолчанию, обычно
cellpadding=1
и cellspacing=2
.
Заметим, что когда значение атрибута cellspacing
отлично от нуля,
каждая ячейка обрамляется отдельной рамкой.
bgcolor
и background
Если эти атрибуты не заданы, элементы таблицы выводятся прямо на фон
документа и таблица выглядит прозрачной. Атрибут bgcolor
задаёт цвет фона таблицы, а атрибут background
—
“паркетный” фон.
border
и bordercolor
Первый атрибут задает толщину рамки (границы) таблицы,
второй — цвет этой рамки. Если задано значение
border=0
, табличная рамка, а заодно и рамки клеток, не
рисуются.
Если значение border
отлично от нуля, табличная рамка
отображается с эффектом трёхмерности. Добавление атрибута
bordercolor
обеспечивает плоские рамки.
В браузере Opera атрибут bordercolor
не работает,
а в Firefox относится только к рамке самой таблицы.
border=0 cellpadding=10 cellspacing=0
|
|
||||||
border=2 cellpadding=10 cellspacing=1
|
|
||||||
border=5 bordercolor=red cellpadding=10 cellspacing=0
|
|
||||||
border=5 bordercolor=red cellpadding=10 cellspacing=5
|
|
||||||
![]() border =bordercolor =cellpadding =cellspacing =
|
|
TR
HTML-таблица состоит из строк, каждая из которых задаётся элементом
TR
:
<TR>Описание ячеек табличной строки</TR>
Используя атрибуты элемента TR
, можно установить те или
иные свойства одновременно для всех ячеек строки.
Атрибут | Значение | Описание |
---|---|---|
align |
left , right , center |
Выравнивание содержимого ячеек по горизонтали.
По умолчанию содержимое обычных ячеек (TD ) выравнивается
слева, ячеек-заголовков (TH ) по центру.
|
valign |
top , middle , bottom |
Выравнивание содержимого ячеек по вертикали. По умолчанию содержимое ячеек выравнивается по центру. |
bgcolor |
Цвет | Цвет фона ячеек в строке. По умолчанию фон ячеек совпадает с фоном таблицы. |
align
и valign
Атрибут align
определяет горизонтальное выравнивание. Если
атрибут не задан, содержимое ячеек выравнивается по левому краю
ячейки, точно так же, как при значении align=left
(для TD
,
а для TD
— по центру).
Значение align=right
задает выравнивание по правому краю ячейки,
а значение align=center
— по центру ячейки.
Атрибут valign
определяет вертикальное выравнивание
содержимого ячеек: top
— по верхнему краю ячейки,
bottom
— по нижнему, middle
—
по центру ячейки. По умолчанию (если атрибут не задан) браузер
центрирует содержимое ячеек по вертикали.
align =valign =
|
|
bgcolor
Если атрибут bgcolor
не задан, содержимое ячеек таблицы
выводится на фоне, установленном для таблицы или на фоне документа,
если фон таблицы не задан. Атрибут bgcolor
позволяет задать
собственный фоновый цвет для всех ячеек в строке .
bgcolor =
|
|
TD
и TH
Каждая табличная строка состоит из ячеек, которые последовательно
описываются элементами TD
(обычная ячейка)
и/или TH
(ячейка-заголовок):
<TH>Описание содержимого ячейки</TH>
<TD>Описание содержимого ячейки</TD>
Содержимое обычной ячейки (TD
) по умолчанию выравнивается
слева по горизонтали и по центру по вертикали.
Содержимое ячейки-заголовка (TH
) по умолчанию
выравнивается по центру, как по горизонтали, так и по вертикали.
Кроме того, текст в ячейке-заголовке выделяется (полужирным
начертанием шрифта).
Атрибуты элементов TD
и TH
приведены в таблице:
Атрибут | Значение | Описание |
---|---|---|
align |
left , right , center |
Выравнивание содержимого ячейки по горизонтали.
По умолчанию выравнивание определяется аналогичным атрибутом элемента
TR , который содержит данную ячейку, а если выравнивание
в элементе TR не задано,
содержимое обычных ячеек (TD ) выравнивается
слева, ячеек-заголовков (TH ) по центру.
|
valign |
top , middle , bottom |
Выравнивание содержимого ячейки по вертикали.
По умолчанию выравнивание определяется аналогичным атрибутом элемента
TR , который содержит данную ячейку, а если выравнивание
в элементе TR не задано,
содержимое ячеек выравнивается по центру.
|
width |
Число или процент | Ширина ячейки. Если атрибут не задан, размер определяется по содержимому и заданному способу форматирования. |
height |
Число или процент | Высота ячейки. Если атрибут не задан, размер определяется по содержимому и заданному способу форматирования. |
bgcolor |
Цвет |
Цвет фона ячейки.
По умолчанию работает аналогичный атрибут в элементе-родителе TR ,
а если он не задан, атрибут в элементе TABLE . Если фон
не задан и в элементе TABLE , фон ячеек прозрачный.
|
background |
URL файла | Фоновая картинка для ячейки |
nowrap |
Выключение автоматического перевода строк. Если атрибут не задан, текст форматируется под размеры ячейки. | |
colspan |
Число | Ширина составной ячейки в столбцах |
rowspan |
Число | Высота составной ячейки в строках |
Атрибуты, совпадающие с атрибутами для строки и таблицы, имеют тот же смысл, но относятся к отдельной ячейке.
Рассмотрим подробнее новые атрибуты.
nowrap
Обычно браузер форматирует содержимое ячейки таблицы так же, как и текст абзаца на всей странице.
(1,1) | (1,2) |
(2,1) | — Грозный Генька-генератор грубо грыз горох горстями — начала было машина, но Трурль подскочил к пульту управления, нажал на рубильник и, заслонив его собственным телом, промолвил сдавленным голосом: |
(3,1) | (3,2) |
То есть, когда очередное слово не помещается в строке, оно вместе с остатком переносится на следующую строку. И так происходит до тех пор, пока браузер не уложит весь текст в оконные строки. Полученный абзац виден на экране по ширине целиком и не требует горизонтальной прокрутки, даже если он очень длинный.
Атрибут nowrap
(у него нет присваиваемых значений)
запрещает браузеру выполнять описанное выше автоматическое
форматирование. При больших абзацах и небольших размерах окна этот
приём вынуждает браузер показывать горизонтальную полосу
прокрутки.
<HTML>
<HEAD>
<META http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<TITLE>Атрибут nowrap</TITLE>
</HEAD>
<BODY bgcolor=white text=black>
<H2>Атрибут nowrap</H2>
<TABLE border=1 cellpadding=10 cellspacing=1>
<TR>
<TD>(1,1)</TD>
<TD>(1,2)</TD>
</TR>
<TR>
<TD>(2,1)</TD>
<TD nowrap bgcolor=#ffcc00>
— Грозный Генька-генератор грубо грыз
горох горстями… — начала было
машина, но Трурль подскочил к пульту управления,
нажал на рубильник и, заслонив его собственным
телом, промолвил сдавленным голосом:
</TD>
</TR>
<TR>
<TD>(3,1)</TD>
<TD>(3,2)</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Как уже говорилось, горизонтальная прокрутка не способствует
улучшению комфорта для пользователя, поэтому применение атрибута
nowrap
ограничивается специальными (и довольно редкими)
случаями.
colspan=n
Атрибут colspan=n
определяет, сколько табличных столбцов (n) займёт
ячейка в пределах строки.
Пример использования атрибута colspan
приводится ниже.
<HTML>
<HEAD>
<META http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<TITLE>Атрибут colspan</TITLE>
</HEAD>
<BODY bgcolor=white text=black>
<H2>Атрибут colspan</H2>
<TABLE border=1 cellpadding=10 cellspacing=0>
<TR>
<TD colspan=2>
Для этой ячейки задан атрибут
<CODE>colspan=2</CODE>.
</TD>
</TR>
<TR>
<TD>(2,1)</TD>
<TD>(2,2)</TD>
</TR>
<TR>
<TD>(3,1)</TD>
<TD>(3,2)</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Схема кода таблицы примера показана на рисунке:
rowspan=n
Атрибут rowspan=n
определяет, сколько табличных строк (n) займёт
ячейка в пределах столбца. Пример использования атрибута rowspan
показан ниже.
<HTML>
<HEAD>
<META http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<TITLE>Атрибут rowspan</TITLE>
</HEAD>
<BODY bgcolor=white text=black>
<H2>Атрибут rowspan</H2>
<TABLE border=1 cellpadding=10 cellspacing=0>
<TR>
<TD rowspan=2>
Для этой ячейки задан атрибут
<CODE>rowspan=2</CODE>.
</TD>
<TD>(1,2)</TD>
</TR>
<TR>
<TD>(2,2)</TD>
</TR>
<TR>
<TD>(3,1)</TD>
<TD>(3,2)</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Схема кода таблицы примера показана на рисунке:
CAPTION
Элемент CAPTION
помещается внутрь контейнера
TABLE
(вне табличных строк) и задаёт заголовок таблицы.
<HTML>
<HEAD>
<META http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<TITLE>Элемент CAPTION</TITLE>
</HEAD>
<BODY bgcolor=white text=black>
<H2>Элемент CAPTION</H2>
<TABLE border=1 width=50%
cellpadding=10 cellspacing=0>
<CAPTION>Заголовок таблицы</CAPTION>
<TR>
<TD>(1,1)</TD>
<TD>(1,2)</TD>
<TD>(1,3)</TD>
</TR>
<TR>
<TD>(2,1)</TD>
<TD>(2,2)</TD>
<TD>(2,3)</TD>
</TR>
<TR>
<TD>(3,1)</TD>
<TD>(3,2)</TD>
<TD>(3,3)</TD>
</TR>
</TABLE>
</BODY>
</HTML>
По умолчанию заголовок размещается сверху таблицы и выравнивается по её
центру. Другое расположение для заголовка можно задать при помощи атрибута
align
:
Значение | Описание |
---|---|
top |
Заголовок располагается сверху таблицы и выравнивается по центру |
bottom |
Заголовок располагается снизу таблицы и выравнивается по центру |
left |
Заголовок располагается сверху таблицы и выравнивается слева |
right |
Заголовок располагается сверху таблицы и выравнивается справа |
Атрибутом align
нельзя задать, например, заголовок,
расположенный снизу и выровненный по левому краю. Ситуацию можно
исправить использованием стилевых свойств:
<TABLE border=1 width=50%
cellpadding=10 cellspacing=0>
<CAPTION align=bottom style="text-align:left"
>Заголовок таблицы</CAPTION>
Разные браузеры немного по-разному выводят заголовок таблицы. Например, браузер IE выравнивает заголовок слева не по краю таблицы, а по уровню ячеек первого столбца.
Откройте Спецификацию HTML 4.0 (или 4.01), и прочитайте раздел “11. Таблицы”.
Вы узнаете, что строки таблицы могут вкладываются в элемент
TBODY
(тело таблицы). Кроме TBODY
строки могут
группироваться в элементах THEAD
(раздел верхнего
заголовка) и TFOOT
(раздел нижнего заголовка).
Более того, можно объявлять свойства столбцов в начале определения
таблицы с помощью элементов COLGROUP
и COL
,
что позволяет браузерам генерировать таблицу последовательно, без
ожидания поступления с сервера всех табличных данных.