Поиск

Модель обработки в CSS2

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

    Согласно предлагаемой модели, пользовательский агент обрабатывает исходный код в несколько этапов:
  1. Осуществляет грамматический анализ исходного документа и создает дерево документа.
  2. Определяет тип конечного устройства.
  3. Выбирает все таблицы стилей, связанные с документом и ассоциированные с определённым на предыдущем этапе конечным устройством.
  4. Комментирует каждый элемент дерева документа, присваивая по одному значению каждому свойству, ассоциированному с конечным типоп устройства. Операция присвоения значений осуществляется в соответствии с теми правилами, которые описаны в разделе "Каскадирование и наследование".

    Часть агента, относящаяся к вычислению значений, зависит от алгоритма форматирования, предопределяемого конечным типом устройства. Например, если конечным устройством является экран, то пользовательские агенты применяют модель визуального форматирования. Если вывод осуществляется на печатную страницу, то пользовательские агенты применяют страничную модель. Если вывод осуществляется на устройство звукового воспроизведения (например, синтезатор речи), то пользовательские агенты применяют модель звукового воспроизведения.

  5. Создает структуру форматирования на основании комментированного дерева документа. Зачастую структура форматирования очень похожа на дерево документа, но она также может и значительно отличаться от него, особенно, если авторы используют псевдо-элементы и генерируемое содержимое. Во-первых, структура форматирования не обязательно должна быть древовидной, но ее вид в значительной степени зависит от ее реализации. Во-вторых, в структуре форматирования может содержаться как большее, так и меньшее количество информации, чем в дереве документа. Например, если значение некоторого элемента в дереве документа установлено в 'none' для свойства 'display', то этот элемент ничего не сгенерирует в структуре форматирования. С другой стороны, элемент, определяющий список, может сгенерировать больше информации в структуре форматирования: содержимое элемента списка и информацию о стиле списка (например, изображение маркера позиции).

    Следует заметить, что на этом шаге пользовательский агент, поддерживающий CSS, не изменяет дерево документа. В частности, содержание, сгенерированное с применением таблиц стилей, не подается обратно в языковой процессор (например, для повторного грамматического анализа).


  6. Передает структуру форматирования на конечное устройство (например, печать результатов, отображение их на экране, звуковое воспроизведение, и т.д.).

Шаг 1 выходит за рамки данного описания (см., например, [DOM]).

Шаги 2-5 составляют предмет основного внимания в данном описании.

Шаг 6 выходит за рамки данного описания.

Область представления

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

Модель адресации в CSS2

Свойства и селекторы в CSS2 позволяют таблицам стилей обращаться к следующим частям документа или пользовательского агента:
Элементы в дереве документа и определенные связи между ними (см. раздел "Селекторы").
Атрибуты элементов в дереве документа и значения этих атрибутов (см. раздел "Селекторы атрибутов").
Некоторые части содержимого элемента (см. псевдоэлементы :first-line и :first-letter).
Элементы в дереве документа, находящиеся в определенном состоянии (см. раздел "Псевдоклассы").
Некоторые части области представления, в которых будет осуществлен вывод документа.
Определенная информация о системе (см. раздел "Пользовательский интерфейс").