Урок 7. Как мы жили без таблиц?

В практическом HTML-программировании таблицы совершенно незаменимы для…
создания левых и правых полей страницы, выравнивания элементов на экране, многоколонной верстки, наложения картинок друг на друга. И, наконец, для отображения на экране табличного материала, но это — в последнюю очередь. В 90% случаях таблицы используются, как ни парадоксально это звучит, не для отображения таблиц.

Но обо всем по порядку.

Что такое таблица

Всем хорошо известна таблица умножения. Она представляет собой прямоугольник, расчерченный на клетки. Вертикальные ряды клеток образуют столбцы, горизонтальные — строки. Каждая строка и столбец в таблице может иметь свой заголовок. Заголовки записываются в первой строке и первом столбце.

Заголовками строк и столбцов в таблице умножения служат цифры от одного до девяти. Пользоваться таблицей очень просто. Если требуется узнать, например, результат умножения числа 6 на число 8, то нужно прочитать ответ в клетке на пересечении столбца с заголовком “6” и строки с заголовком “8”. Или в клетке на пересечении строки с заголовком “6” и столбца с заголовком “8”. Это все равно, потому что 6·8 = 8·6. В обеих этих клетках написано число 48.
  1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 24 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81

В общем случае таблицы используют для хранения информации с двумя характерными признаками. Значения одного признака расписано в заголовках строк, другого — в заголовках столбцов. А в каждую клетку таблицы заносят значение, одновременно обладающее признаком строки и столбца, на пересечении которых она расположена.

Для таблицы умножения признаками служат значения сомножителей. Первый признак — это значение первого сомножителя, второй — значение второго.

Как задать таблицу

Таблица задается командой <TABLE> ... </TABLE>.

Внутри этих тэгов задаются строки командами <TR> ... </TR>.

Наконец, внутри строк задаются клетки (ячейки) командами <TD> ... </TD>.

Таким образом, по строкам, описывается вся структура таблицы.

Структура таблицы

Рассмотрим следующий пример.

Программа Таблица на экране
(1,1) (1,2)
(2,1) (2,2)
(3,1) (3,2)

Атрибуты команды TABLE

Атрибут Значение Описание
align left, right Выравнивание по горизонтали
width число или процент Ширина таблицы
cellpadding число Расстояние между содержимым ячейки и рамкой
cellspacing число Расстояние между ячейками таблицы
bgcolor цвет Цвет фона таблицы
background файл Фоновая картинка
border число Ширина линий рамки
bordercolor цвет Цвет линий рамки
bordercolordark цвет Цвет рамки (снизу и справа)
bordercolorlight цвет Светлый цвет рамки (сверху и слева)

В приведенных ниже испытателях приводится более подробное описание действий атрибутов, а главное, на стендах можно пощелкать переключателями, подергать за “веревочки” и сразу увидеть, что из этого получилось.

Испытатель Испытатель 1 (атрибуты команды TABLE)
Испытатель Испытатель 2 (атрибуты команды TABLE)

Атрибуты команды TR

HTML-таблица состоит из строк, каждая из которых задается командой

 

Варьируя атрибутами команды TR, можно установить те или иные свойства одновременно для всех ячеек строки.

Атрибут Значения Описание
align left, center, right Выравнивание по горизонтали
valign top, center,bottom, baseline Выравнивание по вертикали
bgcolor цвет Цвет фона
bordercolor цвет Цвет линий рамки
bordercolordark цвет Цвет рамки (снизу и справа)
bordercolorlight цвет Светлый цвет рамки (сверху и слева)

Посмотреть работу атрибутов можно на следующих испытателях:

Испытатель Испытатель 3 (атрибуты команды TR)
Испытатель Испытатель 4 (атрибуты команды TR)

Атрибуты команды TD (TH)

Каждая табличная строка состоит из ячеек, которые последовательно описываются командами TD (обычная ячейка) и (или) TH (ячейка-заголовок):

Содержимое обычной ячейки по умолчанию горизонтально выравнивается по левому краю, а ячейки-заголовка — по центру. Кроме того, текст в ячейке-заголовке выделяется полужирным шрифтом.

Команды TD и TH имеют следующие атрибуты:

Атрибут Значения Описание
align left, center, right Выравнивание по горизонтали
valign top, center, bottom, baseline Выравнивание по вертикали
width число или процент Ширина ячейки
bgcolor цвет Цвет фона
background файл Фоновая картинка
bordercolor цвет Цвет линий рамки
bordercolordark цвет Цвет рамки (снизу и справа)
bordercolorlight цвет Светлый цвет рамки (сверху и слева)
nowrap   Выключение автоматического разрыва строк
colspan число Ширина большой ячейки (в столбцах)
rowspan число Высота большой ячейки (в строках)

Ниже приводятся ссылки на испытательные полигоны.

Испытатель Испытатель 5 (TR и TD: align, valign, width, bgcolor, background, bordercolor, bordercolordark, bordercolorlight)
Испытатель Испытатель Испытатель 6 (TR и TD: align, valign, width, bgcolor, background)
Испытатель Испытатель Испытатель 7 (TR и TD: nowrap)
Испытатель Испытатель Испытатель 8 (TR и TD: colspan)
Испытатель Испытатель Испытатель 9 (TR и TD: rowspan)
Испытатель Испытатель Испытатель 10 (TR и TD: colspan+rowspan)

Многоликие таблицы

Как уже говорилось, использование таблиц в практике HTML-программирования очень неожиданное. Вероятно, авторы языка и не предполагали, что таблицы будут использоваться проектировщиками гипертекстовых страниц как элемент дизайна.

Страничные отступы

В обычных книгах текст не начинается с самого края — страничные поля выделяют информационные блоки и, следовательно, помогают глазам более комфортно воспринимать материал.

В гипертекстовом документе можно создать поля, если размещать информацию внутри таблицы, состоящей всего из одной клетки с невидимыми границами. При изменении значения атрибута cellpadding, меняется ширина полей.

Обычное размещение Размещение в таблице

Малютку сына — баю-бай! —
Прижми покрепче к сердцу
И никогда не забывай
Задать ребенку перцу!

“Алиса в стране Чудес”

Малютку сына — баю-бай! —
Прижми покрепче к сердцу
И никогда не забывай
Задать ребенку перцу!

“Алиса в стране Чудес”

Можно задать поля и при помощи пустых столбцов:

Размещение в таблице Здесь border=1
 

Баюкай сына своего
Хорошею дубиной —
Увидишь, будет у него
Характер голубиный!

“Алиса в стране Чудес”

 
 

Баюкай сына своего
Хорошею дубиной —
Увидишь, будет у него
Характер голубиный!

“Алиса в стране Чудес”

 

Обычной практикой является комбинирование этих двух способов:

Размещение в таблице Здесь border=1
 

Баюкай сына своего
Хорошею дубиной —
Увидишь, будет у него
Характер голубиный!

“Алиса в стране Чудес”

 
 

Баюкай сына своего
Хорошею дубиной —
Увидишь, будет у него
Характер голубиный!

“Алиса в стране Чудес”

 

Один из примеров табличных отступов вы видите сейчас на экране. В качестве страничного фона использована картинка с вертикальной надписью “Robotland” по левому краю. Для того чтобы элементы страницы не налезали на этот “корешок”, все они выводятся на экран внутри таблицы так, как это показано в следующем примере.

 

Крокодильчики мои
Цветики речные!
Что глядите на меня
Прямо как родные?

Это кем хрустите вы
В день веселый мая,
Средь нескушанной травы
Головой качая?

“Алиса в стране Чудес”

Замечание
Не рекомендуется моделировать страничный отступ при помощи таблиц для больших документов. Во-первых, прорисовка документа, “погруженного” в таблицу начинается только после его полной загрузки. Пауза перед чистым экраном действует на пользователя самым отрицательным образом. Во-вторых, браузеры Netscape на таких табличных страницах “теряют ориентацию” при возврате из гиперссылки. Пользователь щелкает на ссылке, браузер показывает новый документ, а точность возврата к старому месту уже проблематична.

Многоколонная верстка

Используя таблицы, можно выводить на экран информацию в несколько колонок:

При свете дрянного керосинового фонаря Остап прочел из путеводителя:

“На правом высоком берегу — город Васюки. Отсюда отправляются лесные материалы, смола, лыко, рогожи, а сюда привозятся предметы широкого потребления для края, отстоящего на 50 километров от железной дороги.   В городе 8000 жителей, государственная картонная фабрика с 320 рабочими, маленький чугунолитейный, пивоваренный и кожевенный заводы. Из учебных заведений, кроме общеобразовательных, лесной техникум.”

Размещение информации на экране
Таблицы, вложенные друг в друга

Используя таблицы, можно выровнять информационные блоки на экране и разместить их в соответствии с дизайн-проектом документа.

Везде на стенах и на колоннах были несмываемые надписи
примерно такого рода:
Вода — источник жизни
Вода — народное достояние
 
     
Одним шайко-объемом можно напоить лошадь
В.Войнович
“Москва 2042”
Кто расточает воду, тот враг народа

Ниже расположен тот же пример, но с включенными рамками. Понятно, что таблицы — полезный инструмент, позволяющий монтировать информационные блоки на экране так, как это необходимо проектировщику.

Везде на стенах и на колоннах были несмываемые надписи
примерно такого рода:
Вода — источник жизни
Вода — народное достояние
 
     
Одним шайко-объемом можно напоить лошадь
В.Войнович
“Москва 2042”
Кто расточает воду, тот враг народа

Наложение картинок

Еще одна необычная практика использования таблиц: построение коллажей.

Постановка задачи. Имеются две картинки:

Хочу показать лося! Но как? и Как мне попасть в телевизор?

Как их наложить друг на друга? Как поместить животное на экран телевизора?

Общая идея: первую картинку сделать фоном для таблицы, а вторую разместить внутри.

Построим таблицу, состоящую из одной клетки. Укажем для этой клетки ширину, равную ширине рисунка, который будем использовать как фон:

 

Да... Получилось не очень хорошо. Для задания высоты ячейки (и таблицы) создатели HTML не придумали атрибута. Мы видим только верхний кусочек фоновой картинки.

Идея: использовать еще одну вспомогательную картинку. По высоте она должна равняться фоновой, а по ширине должна быть такой, чтобы закрывать часть телевизора. Тогда лось, расположенный вслед за вспомогательной картинкой попадет в центр экрана.

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

Привет от сохатого!
Замечание
На самом деле рисовать невидимый GIF можно любой величины. Оптимальной является картинка в один пиксел. Ведь мы всегда можем указать экранные размеры в команде IMG, и наша вспомогательная картинка будет растягиваться до нужного размера. Искажений можно не опасаться — их не будет, а кроме того, эту картинку нельзя увидеть на экране ни в какую лупу!

Для того, чтобы использование невидимой картинки empty.gif (из каталога pic) было более понятным, ниже она заменена на такую же однопикселную картинку empty1.gif, но без режима “прозрачности”, а картинка с лосем показана с рамкой:

Привет от сохатого!


Дополнительные замечания

 


 
Зачетный класс     Здесь

 


Задания

  1. Кузя Ивашкин придумал несколько хитрых таблиц:



    Запишите их на HTML.

  2. В каталоге pic07 расположены две картинки:

    img24.jpg horse.gif

    Вставьте анимированную картинку внутрь рамы.

  3. А теперь попробуйте вставить внутрь рамы ./pic07/frame2.jpg две картинки: ./pic07/cat7.gif и ./pic07/bird2.gif так, чтобы кот лежащий вверху, жадно взирал на птичку, пролетающую под ним.

  4. Напишите программу, которая выводит на экран документ:




  5. Напишите программу, которая выводит на экран документ:



    Картинка с шарами находится в ./pic07/balloon.jpg, а тексты в файле ./pic07/balloon.txt (кодировка Windows).

[оглавление] [урок 6] [урок 8]