8.6 使用与媒体相关的样式表
可以指定一个只用于特定输出的样式表,如只用于打印,或只用于用浏览器在屏幕上查看。例如,可以创建一个具有打印和屏幕版本共有特征的通用样式表,再创建单独的打印样式表和屏幕样式表,分别包含只用于打印的属性和只用于屏幕显示的属性。
指定与媒体相关的样式表的步骤
在
link
或style
开始标记中添加media="output"
,其中output
可以是print
、screen
或all
(尽管还有其他一些选项,但这些是最常见的),参见图8.6.1。多个值之间用逗号分隔。也可以在样式表中使用
@media
规则,参见图8.6.2。这种方法不需要在link
元素中指定媒体类型。
- ...
- <head>
- <meta charset="UTF-8" />
- <title>El Palau de la Música</title>
- <link rel="stylesheet" href="base.css" media="screen" />
- <link rel="stylesheet" href="print.css" media="print" />
- </head>
- <body>
- ...
- <img src="img/palau250.jpg" width="250" height="163" alt="El Palau de la Música" />
- <img src="img/tickets.jpg" width="87" height="163" alt="The Ticket Window" />
- ...
- </body>
- </html>
图8.6.1 通过对link
元素添加media
属性,可以将样式表限制于某种特定的输出。在这个例子中,使用浏览器查看页面时,base.css会起作用(由于使用了media="screen"
);打印页面时,print.css会起作用(由于使用了media="print"
)
提示
media
属性的默认值是all
,因此声明media="all"
是多余的。换句话说,除非需要让样式表具有特殊的输出,否则可以将media
属性留空。有的编码人员倾向于始终显式地包含media="all"
。提示 有9种可能的输出类型:
all
、aural
、braille
、handheld
、projection
、screen
、tty
和tv
。浏览器对它们的支持程度各不相同(大多只有少量的支持)。实际上,用得上的只有screen
和all
),浏览器对它们的支持情况都很好。另一方面(可以这么说),设备对handheld
的支持程度并不高,因此在为移动设备设计时,通常使用screen
而不是handheld
(参见第12章)。projection
类型是为投影仪和其他类似的设备准备的,Opera的投影模式Opera Show支持这种类型。
- @charset "UTF-8";
/ 针对所有媒体的样式 /
img {
border: 4px solid red;
}
p {
color: green;
font-style: italic;
}
/ 打印样式表 /
@media print {
img {
display: none;
}
<b class="calibre3">p {</b>
<b class="calibre3">color: black;</b>
<b class="calibre3">}</b>
}
图8.6.2 样式表中的@media
规则是指定其他媒体类型的另一种方式(参见第12章)。在这个例子中,上面是影响所有媒体类型(包括打印)的样式,下面是专门用于打印的样式。在页面的打印预览模式将看到,图片并未显示(display: none
将它们隐藏了),段落文字是黑色的斜体文字。font-style: italic
声明也应用于打印模式,因为打印样式表并未指定其他的font-style
提示 更多关于创建打印样式表的信息,参见Christian Krammer的文章:www.smashing-magazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/。