首页 / 知识
打印样式CSS的技巧和要点浅析知识分享
2023-04-11 13:48:00

不经过任何处理而直接打印网站上的页面会得到一个不理想的效果。
我们WEB开发人员可以简单采用几个要点来使之达到较为合适的效果:
· 使用响应式布局设置打印的效果
· 在合适的时候打印背景图片和颜色
· 添加显示的网址或页面链接,以供参考
· 使用css filter 提高打印的图形效果
针对打印的样式,而不是屏幕显示样式
首先,我们需要使用媒体查询(media query)针对打印样式设置。
重新针对打印写CSS样式是没有必要的,我们只需要针对差异设置打印的样式覆盖掉之前的默认样式。
大多数的浏览器会自动根据打印更改颜色,以节省打印原料,但是我们还是尽可能的手工设置一下。
为了达到最佳效果,使颜色清晰明了,我们至少需要包含一下基本的打印样式。
对于打印,大多数情况下我们不需要打印整个页面,只需要打印一个简洁的能够突出需要信息的页面,那么我们将不相关的部分隐藏掉(如:导航条、背景图片)。
在编写打印样式表的时候,你要注意要使用厘米或者英寸作为单位而不是屏幕像素单位,实际的单位对打印非常有用。
为了保证打印样式有用,写CSS样式使打印的内容距离纸张边缘,看起来更好,需要使用 @page 这个语法:
为了保证不被跨页打印,如一个标题和内容在页面底部被分开:
另一中情况是要防止图片过宽而超出纸张边缘:
第三个要点是确保 articles 文章标签的内容,在新的一页开始:
最后,还要注意列表和图片不被分开在不同的页:
尽管这些还不完美,不过这是一个良好的开始
背景图片和颜色
对于一些网站,颜色和背景图还是非常必要需要遵循的。如果用户是在 webkit 内核浏览器上打印的话,我们可以强制打印机打印屏幕上所看到的颜色(即强制在打印页面上出现任何的背景图和颜色),一般来说彩色打印机可以做到这点,我们需要一个单独的媒体查询:
遗憾的是,这不能马上应用于firefox opera 和IE.
扩展打印样式里的超链接
如果直接打印,超链接将只是一点文字,而不会出现链接的网址,这样来说,是没有意义的。
我们可以将url链接展示在打印的页面上,我们可以使用:after伪类来实现而不影响周围的元素布局:
看下面这是HTML:
下面是显示的效果:
其中一个问题是,打印页面上的锚文本和图像链接也将扩大。我们可以很好的用CSS规则修复。
链接周围图像是比较麻烦的,理想的情况是图像周围的链接将有一个class。
CSS选择器实现将很简单:
所有这些方法都假定用户将继续通过手工输入网址。 一个更好的解决方案是通过提供匹配的QR码的数字版本的页面更容易访问。
打印链接二维码使之更容易访问
如下图:
我们需要使用谷歌 图形API来实现:
· 我们希望谷歌提供的图表信息( qr ,在我们的例子中);
· 呈现大小的的QR印记,以像素为单位;
· URL进行编码;
· 使用的字符编码形式。
通常我们会在页面顶部的一个标题元素关联的URL:
为了创造预期的打印结果,我们将提供足够的间距给H1用来放置二维码,因为这个二维码需要增加到每个页面,我们需要增加一条CSS规则:
这个方法的缺点是使开发者每个元素都请求一个API。如果你的主机是PHP,则可以自动生成当前页面的URL:
给wordpress的样式:
使用CSS3 Filter 提高打印的质量
浏览器通常会打印出横幅图像,特别是如果有问题的旗帜在黑暗的背景是白色的:
CSS3的过滤器做什么,你所期望的 – 在头图像反色,变成黑白色,反之亦然 – 但它们只能在Chrome和Safari。 为了弥补Firefox,我们需要一种不同的方法 – 相当于过滤器作为一个单独的SVG文件写:
从理论上讲,你可以使用一个CSS sprite 之间进行切换不同版本的打印的标志,但是这将意味着增加一倍的文件大小可能没有什么好处。 相反,我建议使用CSS过滤器(和SVG当量,为Firefox)的反转图像之前,打印的页面: 印刷两种形式的标志(即α-蒙面PNG或纯黑色背景)的结果是:
总结
由于打印不方便跟踪,而且缺乏重视。在WEB开发中也往往被忽略,大多数时候我们只阅读线上的网页,而不是打印出来。 另一方面即使人们只是偶尔需要打印的东西从网站,这将是理想的,如果页面设计适合的打印机,就像现代的网站适应各种屏幕尺寸和设备。 打印的自适应设计,可用性和可访问性和Web开发的重要组成部分,同样应考虑的另一个方面。 处理打印自适应设计的另一个方面,我们实现更多的网站用户的需求-并在同一时间,节省墨水,纸张和其他资源,所有这些都是重要的方面可持续发展的设计 。
|
最新内容
相关内容
python一个数的平方怎么表示
python一个数的平方怎么表示,培训,平方根,个数,函数,模块,表示,方法,表达式,实例,下面,用python进行数学计算,可以使用python内置的函数模块,下pythonprint函数不要换行怎么写
pythonprint函数不要换行怎么写,培训,灵活,函数,对象,参数,文件,空格,结尾,字符,下面,从语法上讲,调用python3.0的print函数有如下的形式:printpython如何打印列表长度
python如何打印列表长度,培训,技术,概念,项目,列表,长度,数组,方法,鲜为人知,初始化,首先,我们需要明确的一点就是Python是没有数组这一概念的python如何求一个数的平方
python如何求一个数的平方,培训,平方根,个数,整数,函数,模块,方法,小数,表达式,数值,用python进行数学计算,可以使用python内置的函数模块,下面pythonpython是什么类型的语言
pythonpython是什么类型的语言,培训,系统,教育,软件,电脑,代码,简介,人工智能,类型,语言,python是一种面向对象、解释型、动态类型计算机程序python如何打印列表
python如何打印列表,代码,培训,列表,参数,语句,结果,定义,切片,函数,后面,Python列表的打印方法如下我们知道,Python打印列表一般是要用for…ipython哪个版本是免费的
python哪个版本是免费的,培训,发行,通用,项目,设计,版本,以上,语言,计算机,构架,python是免费的,也就是开源的。目前市面上主流的版本有pythonpython判断字符串是否为小数的方法
python判断字符串是否为小数的方法,培训,代码,合法,小数点,小数,整数,字符串,方法,右边,左边,python想判断一个字符串是不是一个合法的小数,但python函数如何不返回none
python函数如何不返回none,培训,函数,语句,变量,赋值,参数,实际,结果,字符串,语法,python中,用def语句创建函数时,可以用return语句指定应该返python怎么求一个数的平方
python怎么求一个数的平方,培训,平方根,个数,函数,模块,方法,表达式,实例,下面,以上,用python进行数学计算,可以使用python内置的函数模块,下面python类、模块、包的概念及区别
python类、模块、包的概念及区别,概念,数据,培训,模块,名字,环境,基础,文件,函数,定义,类类的概念在许多语言中出现,是面向对象编程的基础,很容pythonpython免费不?
pythonpython免费不?,培训,代码,盈利,初级,软件,设计,语言,解释性,提示符,标点符号,python是免费的么?python是免费的,也就是开源的。编程软件