使用html2canvas库对可滚动的dom节点导出全量的图片

页面的dom节点样式

想要导出的图片样式

做法

1,使用html2canvas库

javascript 复制代码
先在项目中安装:npm install html2canvas

在vue文件中引用: import html2canvas from "html2canvas";

2, 对于dom节点,不能有overflow: hidden或者 overflow-y:auto的样式设置。

正确写dom的方式是在外层div的类中写样式,内部div用来导出,尽量不要设置样式

javascript 复制代码
<div class="mind-map-scroll-container">
            <div ref="scrollBox">
            ......
            </div>
 </div>
 
.mind-map-scroll-container {
  max-height: 300px; /* 设置最大高度,超出这个高度就会出现滚动条 */
  overflow-y: auto; /* 出现垂直滚动条 */
  position: relative;
  background-color: white;
}

3,主要方法体

javascript 复制代码
// 导出按钮绑定的方法
exportLogs() {
        const node = this.$refs["scrollBox"];
        this.downloadDomPic(
          node,
          `ComputerLog.png`
        );
    },
    downloadDomPic(node, picName) {
      html2canvas(node, { scale: 2, height: node.offsetHeight }).then(
        (canvas) => {
          const a = document.createElement("a");
          a.href = canvas.toDataURL("image/jpg");
          a.download = picName;
          a.click();
        }
      );
    },
相关推荐
QQ4022054961 小时前
python基于vue的大学生课堂考勤系统设计与实现django flask pycharm
vue.js·python·django
光影少年1 小时前
前端如何调用gpu渲染,提升gpu渲染
前端·aigc·web·ai编程
Surplusx2 小时前
运用VS Code前端开发工具完成网页头部导航栏
前端·html
小宇的天下2 小时前
Calibre 3Dstack --每日一个命令day13【enclosure】(3-13)
服务器·前端·数据库
LongJ_Sir2 小时前
Cesium--可拖拽气泡弹窗(Vue3版)
javascript
跟着珅聪学java3 小时前
JavaScript 中定义全局变量的教程
javascript
一只小bit3 小时前
Qt 文件:QFile 文件读写与管理教程
前端·c++·qt·gui
午安~婉3 小时前
整理知识点
前端·javascript·vue
向前V3 小时前
Flutter for OpenHarmony数独游戏App实战:底部导航栏
javascript·flutter·游戏
人道领域3 小时前
JavaWeb从入门到进阶(javaScript)
开发语言·javascript·ecmascript