前端打印功能实现及css设置
首先是使用下边代码,实现js局部打印功能。参数dom为需要打印的节点,为了保证页面功能的单一性,最好弹出一个新的预览页面完成打印功能。
function print(dom){
var body = document.body.innerHTML;//先获取当前页的html代码
document.body.innerHTML = document.querySelector(dom).innerHTML;//需要打印的页面
window.print();
document.body.innerHTML =body;//打印完成之后,还原界面}
实现了js的打印功能之后,就是对于打印部分进行css样式,在样式设置我踩了不少坑。下边假如是要打印的代码<div class="page">
<div class="page">
<p> 2.1 甲方出租给乙方的房屋位于 <span class="fb td">北京 北京市海淀区三义庙2号院</span> ,作为居住使用。</p>
<p>2.2 房屋现有装修、订制款全套家具、卫浴洁具、畅享宽带、其余配套点缀的装饰物均由乙方使用,详见合同附件《入住物品移交书》。</p>
<p>2.3《入住物品移交书》作为甲方按照本合同约定交付乙方使用和乙方在本合同租赁期满交还房屋时的验收依据之一。</p>
<h5 class="text-center">第三条 房屋租金与租赁期</h5>
<p>3.1 房屋租金为每月人民币 <span class="td">陆仟贰佰元整 (¥6200.00)。</span></p>
<p>3.2 租赁期自<span class="td">2017年12月29日</span>至<span class="td">2018年12月28日</span>止。</p>
<table class="part1">
<tr>
<td>1</td><td>2</td><td>3</td><td>4</td>
</tr>
<tr>
<td>1</td><td>2</td><td>3</td><td>4</td>
</tr>
</table>
<div class="part2
">
<div class="list left"> 租户签字:<div>日期:</div> </div> <div class="list left"> 运营专员签字:<div>日期:</div> </div> <div class="list left"> 店长审核:<div>日期:</div> </div> </div> </div>
初始样式为
.page {
width:800px;
margin:0 auto;
}
.page .part1 {
width:100%;
}
.page .part2 td{
height:30px;
}
然后针对打印样式进行设置,这里要用到媒体查询,字体一般用pt单位,宽高和间距一般用物理单位cm或mm
@media print {
html,body {
//A4默认为210mm*287mm
width:210mm
height:297mm
}
.page{
font-size:10pt;
width:initial;
}
.page .part2 td{
height:1cm;
}
@page {
size:A5;
margin:1cm;//设置打印出来的页面外边距
}
}
.page一定不要指定宽度,否则在某些浏览器或打印设置有放大时,会出现页面打印不全的问题,如下图。出现此问题原因可查看此篇博客
在现实情况下,某些关联性较强的一整块内容,如果不做特殊设置的话,打印出来可能被分割到下一页,而我们不希望这样子。那么可以通过设置该模块为不可分割,例如part2部分,如下设置
.part2 {
page-break-inside: avoid;//这样part2永远都会在同一页
}
.part1 tr {
page-break-inside: avoid;//这样设置能保证表格每一行不会被强行分割
}
如果我们想强制从某一部分另起一页,可以设置如下:
.part2 {
page-break-before: always;
}
基本上打印所需的特性就是这些了,over。
前端打印功能实现及css设置的更多相关文章
- 网站开发进阶(十二)JS实现打印功能(包括打印预览、打印设置等)
JS实现打印功能(包括打印预览.打印设置等) 绪 最近在进行项目开发时,需要实现后台管理端打印功能,遂在网上一阵搜索,搜到了很多相关的文章.其中绝大部分文章都是使用的Lodop5.0(Web打印和套打 ...
- web的各种前端打印方法之CSS控制网页打印样式
来源:http://www.jb51.net/web/70358.html CSS控制网页打印样式: 使用CSS控制打印样式,握刚刚使用时一塌糊涂,根本不知道CSS中的midia的作用是什么,问到别人 ...
- c#实现打印功能,可以设置纸张大小,字体和颜色等
/// <summary> /// 打印的按钮 /// </summary> /// <param name="sender"></par ...
- css设置网页打印样式
有三种方法 1. 为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显示的css: <link rel="stylesheet" href="css/n ...
- 转载自前端开发:CSS设置滚动条样式
浏览器默认的滚动条样子太过屌丝了,得自己动手整整.记得IE浏览器有几个设置滚条的样式,不过比较鸡肋,只能设置颜色之类的,而且webkit下面也不支持.无意间看到网易邮箱的滚动条样子很好看,一开始以为是 ...
- react + antd 实现打印功能(踩了不少坑)
最近在有网页打印需求,尝试了一下react的打印功能,遇到了不少的坑: 1.react本身有一些打印的组件,但都不好用,都是基于window.print(),但是window.print()如果直接打 ...
- 强大的打印功能jatoolsPrinter使用总结
最近功能做项目,需要实现打印条码标签的功能,对于第一次接触打印机的小白来说简直是折磨死我拉,公司采购的打印机是斑马的GK888T,其实,如果单纯的想实现能打印出来标签的话,直接用window.prin ...
- [原创]Lodop打印, 以及Lodop引用css文件控制打印样式的问题.
最近在做Lodop打印功能: 思路是: 用MasterPage搭个打印页面的框架, 然后在具体的页面中填入数据, 打印的样式由母版页和CSS来控制. 困扰了一天的问题是: 在打印的JS文件中, 引 ...
- 【经验之谈】前端面试知识点总结(CSS相关)——附答案
目录 二.CSS部分 1.解释一下CSS的盒子模型? 2.请你说说CSS选择器的类型有哪些,并举几个例子说明其用法? 3.请你说说CSS有什么特殊性?(优先级.计算特殊值) 4.要动态改变层中内容可以 ...
随机推荐
- intellij idea 重命名或复制一个项目(不用重启)
Idea 内无法直接修改Explorer 里文件夹的名称,只能手动改文件夹的名称. 目前找到的最好的方法: 1)重命名一个项目 在Idea 项目关闭状态下,在 Explorer (Windows) / ...
- Ubuntu apt-get更换阿里云源
sudo vim /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe ...
- Oracle 性能调优 SQL_TRACE
思维导图 Oracle优化10-SQL_TRACE解读 Oracle优化11-10046事件 概述 当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起 ...
- C++实现去掉string字符串前后的空白字符
C++标准库提供的字符串类string没有提供类似CString中Trim方法,该方法功能为去除字符串前后的空白字符.利用string自身一些方法可以很容易实现该功能. 如下: void Trim(s ...
- linux怎样使用top命令查看系统状态
有时候有很多问题只有在线上或者预发环境才能发现,而线上又不能Debug,所以线上问题定位就只能看日志,系统状态和Dump线程. Linux系统可以通过top命令查看系统的CPU.内存.运行时间.交换分 ...
- 安装es6转码工具babel,具体步骤
新建文件夹:testBabel 全局安装Babel:npm install babel-cli -g //babel的命令会成为全局变量,可以直接使用,一般全局后还要装本地(本工程目录) 初始化:np ...
- ACM对拍程序
1.把所需对拍的代码的可执行文件a.exe b.exe放在同一目录下 2.把rand数据的代码的可执行文件c.exe放在该目录下 3.新建一个txt文件,里面添加代码,后把格式改成bat @echo ...
- CodeChef - COUNTARI Arithmetic Progressions (FFT)
题意:求一个序列中,有多少三元组$(i,j,k)i<j<k $ 满足\(A_i + A_k = 2*A_i\) 构成等差数列. https://www.cnblogs.com/xiuwen ...
- 在Linux下不重启让配置文件修改后立即生效的办法
在linux修改配置文件后可能没有生效,比如JDK文件配置,配置后可能没有生效,为了让文件生效,如下操作可以让配置文件生效. 例如,我刚修改了“/etc/profile”或“~/.bash_profi ...
- redis 简单命令操作
一.概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String.List.Set.Hashes和Sorted-Set.这些命令都具有一个共同点,即所有的操作都是针对与K ...