使用jquery+CSS实现控制打印样式


Posted in Javascript onDecember 31, 2014

一、添加打印样式

1. 为屏幕显示和打印分别准备一个css文件,如下所示:
  用于屏幕显示的css: <link rel="stylesheet" href="css/mainstylesheet.css" media="screen" />
  用于打印的css:<link rel="stylesheet" href="css/printstylesheet.css" media="print" />

2. import方式:
  <style type="text/css">
      @import url("css/printstylesheet.css") print;
  </style>

3. 直接把屏幕显示样式和打印样式写在一个css文件中:
  @media print {}{
    h1 {
      color: black;
    }
    h2 {}{
      color: gray;
    }
  }
  @media print里面的内容只对打印出来的内容有效,之外的内容就是屏幕显示的样式。

其他:
创建一个不指定媒体类型的样式表通常很有用(或者利用media="all")。当你准备好定义一些特别用
于打印的规则时,可以只创建一个单独的样式表,使任何在打印时看起来不好的样式都失效。使用这种方法的一个问题是必须确保打印机样式实际上确实覆盖了主样式表。可以使用!important.

二、打印样式注意事项:

1. 打印样式中不推荐使用背景,因为浏览器默认情况下并不能打印出CSS中的背景内容,只有当浏览器被
  设置可以打印背景的情况下才能打印出背(ie的高级选项中可选)。即使背景可以打印,它也可能盖过叠在它上面的任何文本。
  这是真的,尤其对于用彩色背景在显示器上强烈对比的文本,但是在黑白打印机上打印时会融合这一背景。
  background:none;去掉背景
  图片和颜色。

  可以利用background-color属性设置背景颜色为白色,像这样: font-family: Arial; line-height: 26px;">  使用background的快捷法也可以获得相同的效果:background: white。因此像background: white;
  这样的声明不仅设置了背景颜色为白色,而且消除了所有背景图片。利用这个background的快捷属性,
  你实现了两个目的——设置了一个白色背景,并消除了图片——只用很少的代码。
 
2. 如果需要在打印内容中出现图片,请在HTML代码中加入。

3. 打印设置使用的是物理单位,所以尺寸最好不要用像素(px),可以用pt也可以用cm;

4. 隐藏不需要的或是次要的内容。display:none;

5. 尽量不要让内容浮动,有些浏览器打印浮动的div的过程中,会有一个麻烦,需要特别加以注意。
 不要在打印的样式表中浮动的块,像这样:float: none;。例如,基于Gecko的浏览器
 (例如Netscape 6+),当用户用它来浏览一个打印输出页面时,它会截去浮动元素中的内容。
 这些内容就不会被传送到打印机,下一个页面也不会有它的踪影??它消失了。

6. 尽可能的在HTML代码中做好内容重要的先后次序,这样在打印样式中可以节省不少的麻烦。

7. 打印与网页不一样,打印一定要留下白边,单位用英寸(in)。

8. 要确保页面上的所有文本以黑色打印,就用通配选择器(见第54页)和!important来创建把每个
  标签都格式化为黑色文本的单个样式:
  *{ color: ##000# !important }

9. 在打印中显示链接url的信息:利用一个高级的选择器:after和一个高级的CSS属性称作content,
  把不在屏幕上显示的文本打印在一个样式元素的末端。
  不幸的是,:after选择器和content属性技巧在Internet Explorer 6或者更早的版本上不起作用
  (到编写本书为止,在IE 7上也不行)。但是它在Firefox和Safari上的确可以,因此你至少可以清楚
  地说明URL以便访问者可以使用他们的浏览器。

  为了做到这点,给打印样式表添加一个样式,在每个链接后面打印出URL。你甚至可以添加其他文本项
  目比如圆括号,使它更好看些:
  a:after {content: " (" attr(href) ") ";}

  然而,这个CSS不区分外部或者内部的链接,因此它也打印出到达同一个网站其他页面的没用的相对
  文档链接:“访问主页(../../index. html)。”利用一点点CSS 3魔法,就可以强制这个样式只打
  印绝对的URL(即以http://开头的那些),像这样:
  a[href^="http://"]:after {content: " (" attr(href) ") ";}

10.给打印添加分页符:两种被广泛认可的属性是page-break-before和page-break-after。
  page-break-before告诉网页浏览器在一个指定样式之前插入一个分页符。利用page-break-before
  属性使图片打印在一张新页面上,并且适合整张页面。
  要使一个元素作为打印页上的最后一个项目显示,就给那个元素的样式添加page-break-after: always。

  创建两个类样式,以类似于.break_after和.break_before的名字来命名,像这样:
  .break_before { page-break-before: always; }
  .break_after { page-break-after: always; }

  然后你可以选择性地把这些样式应用给应该打印在网页顶部或者底部的元素。

三、测试打印样式

通常来说我们不可能用打印机来进行测试,在IE浏览器菜单栏“文件”中有“打印预览”,可以通过这
打印预览来做测试。

Javascript 相关文章推荐
IE6下出现JavaScript未结束的字符串常量错误的解决方法
Nov 21 Javascript
图片上传判断及预览脚本的效果实例
Aug 07 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
Mar 09 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
利用Angular.js编写公共提示模块的方法教程
May 28 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
vue.js实现回到顶部动画效果
Jul 31 Javascript
layui实现checkbox的目录树tree的例子
Sep 12 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
关于Vue Router的10条高级技巧总结
May 06 Vue.js
浅谈javascript中字符串String与数组Array
Dec 31 #Javascript
jQuery中[attribute!=value]选择器用法实例
Dec 31 #Javascript
JavaScript中的Primitive对象封装介绍
Dec 31 #Javascript
JavaScript中的值类型转换介绍
Dec 31 #Javascript
javascript实现滑动解锁功能
Dec 31 #Javascript
JavaScript中number转换成string介绍
Dec 31 #Javascript
JavaScript中string转换成number介绍
Dec 31 #Javascript
You might like
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
学习php分页代码实例
2013/10/24 PHP
Linux中为php配置伪静态
2014/12/17 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python difflib模块示例讲解
2017/09/13 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
ECHT官方网站:男女健身服
2020/02/14 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
《望庐山瀑布》教学反思
2014/04/22 职场文书
幼师辞职信范文
2015/02/27 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
班主任寄语2016
2015/12/04 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL