Установка значений свойств. Каскадирование и Наследование
Специфицированные, вычисленные и текущие значения
После того, как ПА разобрал документ и сконструировал "дерево документа" , он обязан назначить каждому элементу дерева значение для каждого свойства, применимое для целевого "типа носителя" .
Конечное значение свойства является результатом трёхступенчатого процесса вычисления: значение определяется по спецификации ( "специфицированное значение" ), затем, если необходимо, выводится абсолютное значение ( "вычисленное значение" ) и наконец - трансформируется в соответствии с ограничениями локальной среды ( "реальное значение" ).
Специфицированные значения
ПА обязаны сначала назначить свойству специфицированное значение на основе следующих механизмов (по приоритету):
- Если каскад даёт значение, использовать его.
- Если свойство унаследовано, использовать значение элемента-предка, обычно - вычисленное значение.
- Иначе, использовать начальное значение свойства. Начальное значение каждого свойства указано в определении свойства.
Не имея предков, корневой элемент дерева документа не может использовать значения, унаследованные от элемента-предка; в этом случае используется, если необходимо, начальное значение.
Вычисленные значения
Специфицированные значения могут быть абсолютными (т.е. не специфицированными относительно других значений: 'red' или '2mm') или относительными (т.е. специфицированными относительно других значений: 'auto', '2em', '12%'). Для абсолютных значений не требуется никаких вычислений, чтобы найти вычисленное значение.
Относительные значения, с другой стороны, обязаны быть трансформированы в вычисленные значения: процентные рассчитываются относительно данного значения-ссылки (каждое свойство определяет соответствующее значение), значения с указанием единиц измерения (em, ex, px) должны быть сделаны абсолютными путём применения подходящих по размеру шрифтов или в пикселах, значения 'auto' должны высчитываться по формулам, данным для каждого свойства, ключевые слова ('smaller', 'bolder', 'inherit' ) должны быть замещены в соответствии со своими определениями.
В большинстве случаев элементы наследуют вычисленные значения. Однако есть некоторые свойства, чьи специфицированные значения могут наследоваться (например, числовое значение свойства 'line-height'). В тех случаях , когда дочерние элементы не наследуют вычисленные значения, это описывается в определении свойства.
Реальные значения
Вычисленное значение в принципе готово для использования, но ПА могут не иметь возможности использовать такое значение в имеющемся окружении. Например, ПА могут иметь возможность представлять рамки лишь размером в целое число пикселов и, следовательно, должны сделать приближение до вычисленной ширины. Реальное значение - это вычисленное значение после выполнения некоторого приближения.