Vue项目中打印选部分网页

1、网上方法

1、

先将页面上不需要打印的部分display设为none,只留下需要打印的部分,然后打印完再将display设置回来,缺点是对于根元素display有的为flex有的为block的不太适用,需要reload页面

2、

取出需要打印部分的html,将html页面的body替换掉,然后打印完替换回来,缺点是如果页面复杂且css是一层一层写的就容易在打印的时候丢失样式

3、

自定义一个vue组件,里面放一个iframe,然后把需要打印的部分绑定到这个iframe中,缺点是组件编写繁琐,获取css样式也很麻烦

2、个人实现

因为页面不复杂,所以选择了第二种方法


绑定ref

给需要打印的部分最外层套一个大的div,然后绑定ref

doPrint() {
  // 设置要打印区域
  const printArea = this.$refs.print.innerHTML
  //console.log(printArea)
  // 存储原区域
  // const oldArea = window.document.body.innerHTML
  // 复制给body,并执行window.print打印功能
  document.body.innerHTML = printArea
  window.print()
  // 还原原区域
  location.reload()
}
CSS样式

通过$refs获取节点,并且获取节点内容,复制给页面body,window.print()调用完之后将原来的复制回来,但是发现复制回来之后再次点击打印不生效了。。。暂时没找到原因,因此reload了页面

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 7,372评论 0 7
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 12,017评论 2 19
  • 前端开发知识点 HTML&CSS对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型...
    Hebborn_hb阅读 4,243评论 0 1
  • 转载 前端开发面试题 <a name='preface'>前言</a> 本文由我收集总结了一些前端面试题,初学者阅...
    小九喵喵阅读 3,304评论 0 0
  • 文/水木梁鱼 图/网络 -01- 一开始知道李诞这个人,是在2017年年初一个突然火爆的网综节目《吐槽大会》上,...
    水木梁鱼阅读 5,800评论 3 7