在打印内容前加入样式即可,网上方面很多,有说写入样式文件的但是我测试直接写入样式文件失败了, 所以在打印处直接加入的CSS样式如:
方案1:
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Print Content Example</title>
<!-- <link href="styles.css" media="print" rel="stylesheet" /> -->
<style type="text/css" >
#myp table{border: 1px solid black;}
#myp table td,#myp table th{border: 1px solid black;}
#myp h1{color: red;}
</style>
</head>
<body>
<h2>这里不是打印内容</h2>
<div id="myp">
<h1>这里是表格</h1>
<table>
<thead>
<tr>
<th>姓名</th><th>电话</th><th>邮箱</th><th>地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td><td>18716456666</td><td>930230707@qq.com</td><td>测试地址</td>
</tr>
</tbody>
</table>
</div>
<button onclick="printpage()">打印</button>
<script src="scripts.js"></script>
</body>
</html>JS:
//myp为需要打印的元素ID
function printpage(){
var newstr = document.getElementById('myp').innerHTML;
var oldstr = document.body.innerHTML;
document.body.innerHTML = '<style type="text/css" media="print">'+
'@media print {#myp h1{color: red;}#myp table{border: 1px solid black;}#myp table td,#myp table th{border: 1px solid black;}}</style>'+'<div id="myp">'+newstr+'</div>';
window.print();
document.body.innerHTML = oldstr;
return false;
}方案2
直接写在一起:
<!DOCTYPE html>
<html data-theme="skin0">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no">
<title>条形码</title>
<link rel="stylesheet" type="text/css" href="txm.css" />
</head>
<body>
<h1>打印功能测试</h1>
<button type="button" onclick="doPrint()">打印预览</button>
<!--startprint-->
<div id="test">
<div>
<div>
<div>
<div>1</div>
<div><span>姓名:李先生</span><span>性别:男</span><span>班级:七年级1班</span></div>
<div><span>学校:重庆</span></div>
</div>
<div>
<div>2</div>
<div><span>姓名:李先生</span><span>性别:男</span><span>班级:七年级1班</span></div>
<div><span>学校:重庆</span></div>
</div>
</div>
<div>
<div>
<div>3</div>
<div><span>姓名:李先生</span><span>性别:男</span><span>班级:七年级1班</span></div>
<div><span>学校:重庆</span></div>
</div>
<div>
<div>4</div>
<div><span>姓名:李先生</span><span>性别:男</span><span>班级:七年级1班</span></div>
<div><span>学校:重庆</span></div>
</div>
</div>
<h5 id='nihao'>你好, 这是打印内容</h5>
</div>
</div>
<!--endprint-->
<iframe id="printf" src="" width="0" height="0" frameborder="0"></iframe>
</body>
<script src="jquery-1.9.1.js"></script>
<script>
function doPrint() {
//获取当前页的html代码
var bodyhtml = window.document.body.innerHTML;
//设置打印开始区域、结束区域
var startFlag = "<!--startprint-->";
var endFlag = "<!--endprint-->";
// 要打印的部分
//var printhtml = '<link rel="stylesheet" type="text/css" href="txm.css" />' + bodyhtml.substring(bodyhtml.indexOf(startFlag),
var printhtml = '<style type="text/css" media="print">'+
'@media print {#test{color:red}#nihao{text-align:center;margin-top:25px;color:red;}}</style>' + bodyhtml.substring(bodyhtml.indexOf(startFlag),
bodyhtml.indexOf(endFlag));
console.log(printhtml);
// 生成并打印ifrme
var f = document.getElementById('printf');
f.contentDocument.write(printhtml);
f.contentDocument.close();
f.contentWindow.print();
}
</script>
</html>