CSS 值(values)

用户代理(user agent)解析文档并构造文档树后,必须为文档树中的每个元素的每个属性,指定适用于目标媒体类型(media types)的值。

属性的最终值是经过一个四步计算后的结果:

  1. 通过规范确定一个值(specified 值);
  2. 然后解析为用于继承的值(computed 值);
  3. 然后在必要时转换为绝对的值(used 值);
  4. 最后根据本地环境的限制进行转化(actual 值)。

Specified 值

用户代理必须先根据以下机制(按优先顺序)为每个属性分配指定的值:

  1. 如果是层叠得到的值,使用此值;
  2. 否则,如果属性是继承的,并且元素不是文档树的根,则使用父元素的 computed 值;
  3. 再则,使用属性的初始值。每个属性的初始值都已在属性的定义中指定。

computed 值

在层叠时,specified 值根据规范中属性定义的“Computed Value” 部分,解析为 computed 值,如果是继承值,则根据其中继承部分规范解析,计算一个值时不需要用户代理渲染文档。

即使属性没被应用,computed 值也是存在的,但有些属性可能会要求 computed 值依赖该属性是否应用于元素。

Used 值

在不格式化文档的情况下尽可能处理 computed 值,但有些属性只能依赖文档布局之后,例如块级元素的宽度的百分比计算。used 值就是解决所有剩余依赖后,把 computed 值解析为绝对值的结果。

Actual 值

原则上,used 值就是用于渲染的值,但用户代理可能无法在给定环境中使用该值,例如,用户代理只能按整数像素渲染边框宽,需做近似计算转化,再如,用户代理只能使用黑白色调,需做全彩到黑白的转化。actual 值就是应用这些转化后的 used 值。

媒体类型表

Media Types Media Groups
continuous 连续/paged 分页 visual 视觉/audio 音频/speech 语音/tactile 触觉 grid 网格/bitmap 位图 interactive 交互/static 静态
braille 盲文 continuous tactile grid both
embossed 盲文打印 paged tactile grid static
handheld 手持设备 both visual、audio、speech both both
print 打印 paged visual bitmap static
projection 投影 paged visual bitmap interactive
screen 屏幕 continuous visual、audio bitmap both
speech 语音 continuous speech N/A both
tty 电传打字机 continuous visual grid both
tv 电视 both visual、audio bitmap both


文章参考