使用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();
        }
      );
    },
相关推荐
小桥风满袖10 小时前
极简三分钟ES6 - ES9中for await of
前端·javascript
半花11 小时前
i18n国际语言化配置
前端
编程贝多芬11 小时前
Promise 的场景和最佳实践
前端·javascript
Asort11 小时前
JavaScript 从零开始(四):基础语法详解——从变量声明到数据类型的完全指南
前端·javascript
木木jio11 小时前
前端大文件分片上传 —— 基于 React 的工程化实现
前端·javascript
南雨北斗11 小时前
JS的对象属性存储器
前端
Lotzinfly11 小时前
12个TypeScript奇淫技巧你需要掌握😏😏😏
前端·javascript·面试
一个大苹果11 小时前
setTimeout延迟超过2^31立即执行?揭秘JavaScript定时器的隐藏边界
javascript
开源之眼11 小时前
React中,useState和useReducer有什么区别
前端
普郎特11 小时前
"不再迷惑!用'血缘关系'彻底搞懂JavaScript原型链机制"
前端·javascript