某些CSS特性是只为特定的媒介而设计(如,'cue-before'属性是为语音用户端设计的)。偶尔地,不同媒介类型的样式表可以共享一个属性,不过对于那个属性要赋予不同的值。例如,'font-size'属性用于屏幕和打印媒介。不过这两个媒介是如此地不同,因此对于共同的属性需要不同的值;在计算机屏幕上的文档一般要用比纸面上的文档大一些的字体。经验也告诉我们,屏幕上无衬线字体要容易阅读一些,而在纸面上有衬线的字体要容易阅读一些。基于这些原因,有必要声明一个样式表——或样式表的一段——适用于特定的媒介类型。
目前有两个方法来指定样式表的媒介相关性:
@import url("loudvoice.css") aural; @media print { /* 打印样式表如下 */ }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Link to a target medium</TITLE> <LINK rel="stylesheet" type="text/css" media="print, handheld" href="foo.css"> </HEAD> <BODY> <P>The body... </BODY> </HTML>
一个@media规则以一系列规则(以花括号分割)来指定目标媒介类型(以逗号分割)。@media结构允许不同媒介的样式表规则存在于同一样式表中:
@media print { BODY { font-size: 10pt } } @media screen { BODY { font-size: 12pt } } @media screen, print { BODY { line-height: 1.2 } }
CSS媒介类型名称是一系列CSS属性。用户端如果声明支持一个媒介类型名,它必须实现适用于那个媒介类型的所有属性。
CSS媒介类型名称的选择反映了相关的目标设备,而对于这些设备而言相关的属性是有意义的。下面的CSS媒介类型列表中,附加的说明不是正规的。它们只是给出一个感觉,让我们知道这一媒介类型应该引用什么样的设备。
媒介类型名是大小写敏感的。
由于科技发展迅速,CSS2并不规定一个确定的可以用作@media值的媒介类型列表。
注意。CSS以后的版本可能扩充这一列表。作者不应该依赖于还没有被CSS规范定义的媒介类型名。
每一个CSS属性定义都指定了与CSS一致的用户端应该实现的属性所适用的媒介类型。由于属性通常可以适用于若干个媒介,每一个属性的“适用媒介”一段列出了媒介组而不是单一的媒介类型。每一个属性适用于在定义中列出的媒介组中的所有媒介类型。
CSS2定义了如下的媒介组:
下面的表格说明了媒介组和媒介类型的关系:
媒介类型 | 媒介组 | |||
---|---|---|---|---|
continuous/paged | visual/aural/tactile | grid/bitmap | interactive/static | |
aural | continuous | aural | N/A | both |
braille | continuous | tactile | grid | both |
emboss | paged | tactile | grid | both |
handheld | both | visual | both | both |
paged | visual | bitmap | static | |
projection | paged | visual | bitmap | static |
screen | continuous | visual | bitmap | both |
tty | continuous | visual | grid | both |
tv | both | visual, aural | bitmap | both |