html 打印时隐藏,html 打印相关操作与实现详解

原理为调用 window.print() 方法,但是该方法只能对当前页面全部打印,所以有了以下方案来解决局部打印

1: 利用 iframe 将需要打印的元素和样式注入 再调用打印

// 示例代码

function print () {

let ifElement = document.getElementById('ifId')

const addHtmlPrint = () => {

const content = ifElement.contentWindow || ifElement.contentDocument

content.document.body.innerHTML = this.detailTable

const styleEle = document.createElement('style')

/* 去掉打印时的页头和页脚 */

styleEle.innerHTML = '@media print {@page { margin: 5mm; }}'

content.document.getElementsByTagName('head')[0].appendChild(styleEle)

/* 保障 iframe 中资源加载完成,图片要用 img 形式引入 */

ifElement.onload = () => {

content.print()

}

}

this.getDetailTable()

if (ifElement) {

// 若已经创建,则直接打印

addHtmlPrint()

} else {

ifElement = document.createElement('iframe')

ifElement.setAttribute('id', 'ifId')

ifElement.setAttribute('style', 'display:none')

document.body.appendChild(ifElement)

addHtmlPrint()

}

}

2: 利用 @media print,在当前页面设置打印操作时需要隐藏的元素

@media print{

/* 这里将不需要打印的元素设置为不显示 */

.hidden-element{

display:none;

/* visibility:hidden; */

}

/*纸张设置为宽1200px 高800px*/

@page{

size:1200px 800px;

}

}

标注打印时才会采用的样式

监听打印事件 window.addEventListener('beforeprint|| afterprint', ()=> {});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值