- •Введение в таблицы css
- •17.2 Модель таблиц css
- •17.2.1 Анонимные объекты таблицы
- •17.3 Селекторы столбцов
- •17.4 Таблицы в модели визуального форматирования
- •17.4.1 Положение и выравнивание заголовка
- •17.5 Визуальное расположение содержимого таблицы
- •17.5.1 Слои и прозрачность таблицы
- •17.5.2 Алгоритмы определения ширины таблицы: свойство 'table-layout'
- •Фиксированное расположение таблицы
- •Автоматическое расположение таблицы
- •17.5.3 Алгоритмы определения высоты таблицы
- •17.5.4 Горизонтальное выравнивание в столбце
- •17.5.5 Динамические эффекты строк и столбцов
- •17.6 Границы
- •17.6.1 Модель отдельных границ
- •Границы вокруг пустых ячеек: свойство 'empty-cells'
- •17.6.2 Модель с пересекающимися границами
- •Разрешение конфликтов между границами
- •17.6.3 Стили границ
- •17.7 Автоматическое представление таблиц
- •17.7.1 Произносимые заголовки: свойство 'speak-header'
17.2.1 Анонимные объекты таблицы
Языки документов, отличные от HTML, могут не включать все элементы из модели таблиц CSS2. В этом случае для работы модели таблиц должно считаться, что "отсутствующие" элементы существуют. Отсутствующие элементы генерируют анонимные объекты (например, анонимные блоки в визуальное схеме таблицы) согласно следующим правилам:
Все элементы таблицы будут автоматически генерировать вокруг себя необходимые анонимные объекты таблицы, состоящие по меньшей мере из трех вложенных объектов, соответствующих элементам 'table'/'inline-table', a 'table-row' и 'table-cell'.
Если родительский элемент P элемента T 'table-cell' не является элементом 'table-row', объект, соответствующий 'table-row', будет сгенерирован между элементами P и T. Этот объект будет охватывать все последующие элементы 'table-cell' (в дереве документа) в T.
Если значение родительского элемента P элемента 'table-row' T отлично от 'table', 'inline-table' или 'table-row-group', объект, соответствующий элементу 'table', будет сгенерирован между элементами P и T. Этот объект будет охватывать все последовательные элементы (в дереве документа) элемента T, у которых родительский элемент 'table' должен быть 'table-row', 'table-row-group', 'table-header-group', 'table-footer-group', 'table-column', 'table-column-group' и 'caption'.
Если родительский элемент P элемента T 'table-row-group' (или 'table-header-group' или 'table-footer-group') не является 'table' или 'inline-table', объект, соответствующий элементу 'table', будет сгенерирован между элементами P и T. Этот объект будет охватывать все последовательные элементы (в дереве документа) элемента T, у которых родительский элемент 'table' должен быть 'table-row', 'table-row-group', 'table-header-group', 'table-footer-group', 'table-column', 'table-column-group' и 'caption'.
Если дочерний элемент T элемента P 'table-row' не является элементом 'table-cell', объект, соответствующий элементу 'table-cell', будет сгенерирован между элементами P и T. Этот объект будет охватывать все последовательные элементы T, которые не являются элементами 'table-cell'.
Пример(ы):
В этом примере для XML элемент 'table' может содержать элемент HBOX:
<HBOX>
<VBOX>George</VBOX>
<VBOX>4287</VBOX>
<VBOX>1998</VBOX>
</HBOX>
так как с ним связана следующая таблица стилей:
HBOX { display: table-row }
VBOX { display: table-cell }
Пример(ф):
В данном примере предполагается, что три элемента 'table-cell' в элементах ROW содержат. Обратите внимание, что далее текст помещается в анонимные последовательные блоки, как описано в модели визуального форматирования:
<STACK>
<ROW>Это <D>top</D> строка.</ROW>
<ROW>Это <D>middle</D> строка.</ROW>
<ROW>Это <D>bottom</D> строка.</ROW>
</STACK>
Таблица стилей:
STACK { display: inline-table }
ROW { display: table-row }
D { display: inline; font-weight: bolder }
Агенты пользователей HTML могут не создавать анонимные объекты согласно описанным выше правилам.