网络编程
位置:首页>> 网络编程>> 网页设计>> [翻译]标记语言和样式手册 Chapter 11 打印样式(2)

[翻译]标记语言和样式手册 Chapter 11 打印样式(2)

作者:zhaozy 来源:3user.com 发布时间:2008-02-11 18:44:00 

标签:样式,标记,css,手册,打印

指定媒体的两种方法

W3C中有两种方法能为CSS制定媒体类型.在本章开头示范了其中一种方法,也就是使用<link>标签与media属性,接着让我们比较看看这两种方法.

方法A:Media属性

<link rel="stylesheet" type="text/css" media="screen" href="screenstyles.css" />

与稍早的例子类似,方法A里指定只对电脑屏幕使用screenstyles.css,如此应该能避免在打印,投影,使用手持设备浏览,使用屏幕阅读器之类的时候套用screenstyles.css内的规则.

部分支持

有个重点必须留意,那就是严格支持所有媒体类型有点不切实际,在理想世界里,所有装置与浏览器都应该严格遵守指定的媒体类型,举例来说,如果写了:

<link rel="stylesheet" type="text/css" media="handheld" href="screenstyles.css" />

那么就会希望只有手持设备(像是PDA,手提电话等)会套用这些样式,不幸的是,标准内容在本文编写的时候似乎还没有普及到浏览器之外的世界,因此并不是任何设备都支持与其对应的媒体类型.

由于这个道理,我们会把焦点放在能够实际应用的媒体类型上,比如说打印样式.

方法B:@media或@import

<style type="text/css">
  @import url("screenstyles.css") screen;
  @media print {
    /* 打印时使用的样式放置在此 */
  }
</style>

第二种指定媒体类型的方法是结合@import和@media声明.举例来说,当我们以@import引入外部样式表时,能够一并为它指定媒体类型.

同样的,@media规则能够隔出针对某种特定媒体的规则段落,与方法A类似,以@media指定专门用于打印的样式.

放在<head>里或者放在外部

在方法A里放了<style>标签作为例子,它应该位于文件的<head>内,但是也能把@import与@media放在以<link>标签引用的外部样式表里(参考第10章的"结合方法B与方法C应用多重样式表").

虽然指定媒体类型时screen是预设值,但没有指定媒体类型时会以all作为预设值.这代表,根据预设,CSS会应用到所有设备上,屏幕,手持设备,投影机,屏幕朗读程序等等.

可以使用多重设定

不管使用哪种方法,都能一次指定许多媒体类型,举例来说,如果想以方法A同时为打印,屏幕指定某个样式表,那么可以这样写:

<link rel="stylesheet" type="text/css" media="screen, print" href="screenstyles.css" />

多重设定值在media属性里要用逗号隔开,同样的,如果我们以方法B指定多种媒体类型时,写法则类似这样:

<style type="text/css">
  @import url("screenandprint.css") screen, print;
  @media print {
    /* 打印时使用的样式放置于此 */
  }
</style>

在前面的例子中,通过指定多重媒体类型,把screenandprint.css同时给屏幕显示和打印媒体使用,接着再以@media规则隔开打印专用的样式.

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com