前端打印功能实现及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.要动态改变层中内容可以 ...
随机推荐
- HttpRunnerManager平台异步生成及展示代码覆盖率报告
ant+jacoco+jenkins+HttpRunnerManager代码覆盖率统计平台搭建 实现思路通过jenkins构建,并使用HttpRunnerManager异步实现报告更新与展示. 现在整 ...
- 磁钉导航差速式AGV控制实验
磁钉导航AGV实验 2016-03 本机器是采用RFID电子地标配合磁钉传感器的定位导航AGV.本AGV已初步实现里程计精确解算,磁钉数据融合,AGV定点精准停车.原地旋转换向.远程无线调度的功能,初 ...
- python 的弹框
import easygui easygui.msgbox("This is a message!", title="simple gui")
- linux qt下 QSqlDatabase: QMYSQL driver not loaded
出现上述问题是qt安装目录未包含mysql驱动. 解决方法如下: 1.查看系统是否存在libqsqlmysql.so find / -name libqsqlmysql.so 2.若不存在该文件则安装 ...
- 深入了解SQL Tuning Advisor(转载)
1.前言:一直以来SQL调优都是DBA比较费力的技术活,而且很多DBA如果没有从事过开发的工作,那么调优更是一项头疼的工作,即使是SQL调优很厉害的高手,在SQL调优的过程中也要不停的分析执行计划.加 ...
- postgresql 建模文件 LDM 转成PDM 生成 SQL问题
LDM 转成 PDM (Tool --- GPDM ) 生成 SQL,查看全部SQL 详细步骤见下图. 1.postgresql 没有 VARCHAR2 只有 VARCHAR. 2.LDM 生成 PD ...
- Java设计模式之模板方法模式(Template Method)
一.含义 定义一个算法中的操作框架,而将一些步骤延迟到子类中.使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤,不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现. 二 ...
- Ubuntu中安装Flask模块
pip3 list——python3下安装的***** #如果列表没有flask pip3 install flask即可
- DevOps简单介绍
jenkins作为测试环境代码发布工具,sonar作为静态代码检查工具,idea作为开发工具,jira作为缺陷管理平台,upstream作为code review工具(正在研究).DevOps最近比较 ...
- centos6.7安装lamp
1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport ...