Элемент TABLE
и его потомки-помощники имеют много
визуальных атрибутов, управляющих внешним видом таблицы. Принцип
отделения представления от содержания рекомендует отказаться от них
в пользу аналогичных стилевых свойств.
Давайте посмотрим, какие специальные средства предлагает CSS (наряду с общими свойствами) для управления внешним видом таблицы.
На этой странице:
![]() |
|
Свойство caption-side
задаёт положение заголовка
таблицы перед или после блока таблицы. Ниже приводится пример
использования этого свойства.
CSS
Вид
Если заголовок этой таблицы расположен сверху, значит вы смотрите страницу в браузере IE. |
HTML
|
В CSS определены две модели рамок для ячеек таблицы:
Разработчик указывает модель рамок при помощи свойства
border-collapse
(для элемента TABLE
).
![]() |
|
Управлять промежутками между рамками можно при помощи свойства
border-spacing
.
В качестве значения свойства border-spacing могут быть указаны
один или два размера. Первый размер относится к горизонтали, второй —
к вертикали.
|
|
Таким образом, свойство border-spacing
заменяет атрибут
cellspacing
элемента TABLE
(всюду, кроме
IE) и мощнее его: позволяет управлять отдельно размерами промежутков
по горизонтали и вертикали.
Что касается атрибута cellpadding
, то вместо него можно
использовать свойство padding
, заданное для ячеек
таблицы. Свойство padding
позволяет регулировать внутренние
отступы в ячейках раздельно с каждой стороны.
Атрибут | Свойство | Комментарий |
---|---|---|
cellspacing |
border-spacing |
Размер промежутка между рамками ячеек |
cellpadding |
padding |
Внутренний отступ содержимого ячейки от её рамки |
Модель отдельных рамок.
CSS
Вид
|
HTML
|
Модель сливающихся рамок.
CSS
Вид
|
HTML
|
В CSS определены два подхода для определения ширины таблицы:
Высота вычисляется автоматически независимо от алгоритма вычисления ширины таблицы.
Разработчик указывает модель компоновки таблицы при помощи свойства
table-layout
(для элемента TABLE
).
Модели позволяют создавать разное представление для одной и того же HTML-кода таблицы, кроме того, они различаются по скорости построения таблицы на экране — макет с фиксированной шириной рассчитывается существенно быстрее. |
|
При фиксированной компоновке ширина таблицы определяется максимумом из двух величин:
width
таблицы;
Если таблица оказывается шире суммы ширин столбцов, разница делится на число столбцов и добавляется к каждому из них.
Значение ширины каждого столбца таблицы определяется шириной ячейки в первой строке.
Если ячейки ниже первой строки оказываются шире, то их содержимое
ведёт себя согласно свойству overflow
(содержимое
выходит за границу, отсекается или прокручивается). По умолчанию работает
значение visible
то есть содержимое должно выходить
за границы элемента (по стандарту, разумеется, но IE работает по другому,
см. описание свойства overflow
во
второй части учебника).
Эта компоновка работает по умолчанию, она реализует обычный алгоритм построения таблицы, который выполняется без CSS-указаний.
Если для таблицы не задано свойство width
, большинство
браузеров будет выполнять этот алгоритм, даже если свойство
table-layout
имеет значение fixed
.
Браузер просматривает все ячейки таблицы, вычисляя ширину столбцов по довольно сложному многопроходному алгоритму. При этом каждый конкретный браузер делает это немного по-своему, и сложные таблицы на экране могут иметь разный вид: разные ширины столбцов, и разную общую ширину.
Алгоритмы вычисления высот стандартом (CSS2.1) прописаны поверхностно, следовательно, каждый браузер конкретизирует эти алгоритмы по-своему.
Практический вывод: разработчики должны пока стараться не задавать высоты таблиц и табличных элементов или, по крайней мере, хорошо тестировать свои таблицы в разных браузерах.
CSS
|
HTML
|
Вид
(1,1) | (1,2) | (1,3) |
(2,1) | (2,2) | (2,3) |
(3,1) | (3,2) | В этой ячейке находится длинный текст. |
Содержимое последней ячейки вылезает за пределы таблицы, так как по
умолчанию свойство overflow
имеет значение
visible
, а ширина столбца определяется шириной ячейки в
первой строке (IE содержимое отсекает).
Фиксированная компоновка таблицы гарантирует постоянство ширин
столбцов. В силу этого правило table-layout:fixed
используется, когда таблица лежит в основе многоколонной вёрстки
страницы.
CSS
|
HTML
|
Вид
(1,1) | (1,2) | (1,3) |
(2,1) | (2,2) | (2,3) |
(3,1) | (3,2) | В этой ячейке находится длинный текст. |
Ширина последнего столбца определяется шириной последней ячейки.
Общая ширина таблицы получается больше заданного
значения width:300px
.
Горизонтальное выравнивание содержимого ячейки (то есть
горизонтальное выравнивание в блочных элементах TD
и
TH
) выполняется при помощи свойства
text-align
в точности согласно описанию
этого свойства.
|
CSS
.tab6 { width:100%; border-collapse:collapse; background: #fff2a6; border: 1px solid black; } .tab6 TD, .tab6 TH { border: 1px solid black; padding:10px; text-align:; } |
Вертикальное выравнивание содержимого ячейки (то есть
горизонтальное выравнивание в блочных элементах TD
и
TH
) выполняется при помощи свойства
vertical-align
(см. описание,
правда, в таблицах свойство vertical-align
работает немного по-другому).
|
CSS
.tab7 { width:100%; border-collapse:collapse; background: #fff2a6; border: 1px solid black; } .tab7 TD, .tab7 TH { border: 1px solid black; padding:10px; vertical-align:; } |