曾经探讨过要怎么为打印一个网页提供专门的CSS,结论是要用js,于是放弃了。昨天因为机缘巧合重新研究了这个问题,发现单纯的CSS就可以搞定,不过还是有些值得注意的地方,写在这里与各位分享。
废话不多说,直接进入正题。使用CSS为网页提供样式一般来说有3种方法:关联外部css文件,内部style元素,以及内联样式(即使用元素的style属性)。为了实现向打印页面提供专用的样式表,我们必须采用前面两种方式。
使用外部css文件的做法很简单。假设你有一个名为style.css的文件需要关联到当前的页面,通常的做法是使用下面这条语句:
<link rel="stylesheet" type="text/css" href="style.css" />
如果你需要将print.css这个文件用于该页面的打印,你需要做得仅仅是在其后面添加下面的语句(注意红色的部分):
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
但是请注意,style.css这个样式表仍然对打印的页面起作用,因为浏览器判定它是全局的。如果你提供的是独立的样式表,那么可以在引用style.css的语句里加上:
media="screen"
使用media属性就可以为不同终端提供不同的呈现方式,非常方便。
再来说说使用style元素的方法,只要像下面这样插入相应的代码即可:
<style>
@media screen {
/* 此处代码为屏幕显示提供样式 */
}
@media print {
/* 此处代码为页面打印提供样式 */
}
@media screen,print {
/* 此处代码提供共用的样式 */
}
</style>
为了打印的特殊需求,CSS还提供了一些专门用于打印的属性,见下表:
属性名称 | 描述 | 取值 | CSS |
---|---|---|---|
orphans | 设置当在元素内部换页时页面底部必须剩余的最少行数 | 数值 | 2 |
page-break-after | 设置元素后的换页行为(元素后是否换页) | auto always avoid left right |
2 |
page-break-before | 设置元素前的换页行为(元素前是否换页) | auto always avoid left right |
2 |
page-break-inside | 设置元素内的换页行为(元素内是否换页) | auto avoid |
2 |
widows | 设置当在元素内部换页时页面底部必须剩余的最少行数 | 数值 | 2 |
最后来看一下CSS一共支持多少种media类型。
Media类型 | 描述 |
---|---|
all | 用于所有设备终端 |
aural | 用于语音音频合成器 |
braille | 用于盲人点字触觉回馈设备 |
embossed | 用于分页的盲人点字打印机 |
handheld | 用于小型或手持设备 |
用于打印 | |
projection | 用于项目展示,例如幻灯片 |
screen | 用于电脑屏幕 |
tty | 用于使用固定宽度字符的设备,例如电传打字机和终端 |
tv | 用于电视设备 |
本文部分内容参考w3schools
挺有意义的一篇笔记。
CSS技术的趋势不仅要提高效率和用户体验,还要针对障碍人群和印刷媒体的友好化,media属性平时不常用,其实是很重要的一个属性,这里学习了。
恩恩!快弄表格样式吧!
搞定~