使用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();
        }
      );
    },
相关推荐
oumae-kumiko4 分钟前
【JS/TS鼠标气泡跟随】文本提示 / 操作提示
前端·javascript·typescript
YG·玉方5 分钟前
键盘常见键的keyCode和对应的键名
前端·javascript·计算机外设
梦屿千寻!!18 分钟前
Axios和Ajax的区别
前端
iOS开发的小学生21 分钟前
鸿蒙app封装 axios post请求失败问题
前端·harmonyos·鸿蒙开发
我码玄黄37 分钟前
在THREEJS中加载3dtile模型
前端·javascript·3d·threejs
文浩(楠搏万)1 小时前
Java Spring Boot 项目中嵌入前端静态资源:完整教程与实战案例
java·服务器·前端·spring boot·后端·nginx·github
悠悠华1 小时前
使用layui的table提示Could not parse as expression(踩坑记录)
前端·javascript·layui
谎言西西里1 小时前
JavaScript类型转换(下):掌握 Object 类型 与 隐性 的转换逻辑😎
javascript
东离与糖宝1 小时前
webScoke api 介绍
前端
群联云防护小杜1 小时前
黑客如何找到App中的源IP:原理与防范
运维·服务器·前端·网络·网络协议·tcp/ip