CSS 值(values)
用户代理(user agent)解析文档并构造文档树后,必须为文档树中的每个元素的每个属性,指定适用于目标媒体类型(media types)的值。
属性的最终值是经过一个四步计算后的结果:
- 通过规范确定一个值(specified 值);
- 然后解析为用于继承的值(computed 值);
- 然后在必要时转换为绝对的值(used 值);
- 最后根据本地环境的限制进行转化(actual 值)。
Specified 值
用户代理必须先根据以下机制(按优先顺序)为每个属性分配指定的值:
- 如果是层叠得到的值,使用此值;
- 否则,如果属性是继承的,并且元素不是文档树的根,则使用父元素的 computed 值;
- 再则,使用属性的初始值。每个属性的初始值都已在属性的定义中指定。
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 |
文章参考