使用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();
        }
      );
    },
相关推荐
梦65011 分钟前
Vue 实现动态路由
前端·javascript·vue.js
姜糖编程日记13 分钟前
C++——初识(2)
开发语言·前端·c++
丶乘风破浪丶19 分钟前
Vue项目中判断相同请求的实现方案:从原理到实战
前端·javascript·vue.js
why技术19 分钟前
如果让我站在科技从业者的角度去回看 2025 年,让我选一个词出来形容它,我会选择“vibe coding”这个词。
前端·后端·程序员
worxfr21 分钟前
CSS Flexbox 布局完全指南
前端·css
0思必得021 分钟前
[Web自动化] JS基础语法与数据类型
前端·javascript·自动化·html·web自动化
xiaohe060123 分钟前
📦 Uni ECharts 是如何使用定制 echarts 的?一篇文章轻松掌握!
vue.js·uni-app·echarts
Hy行者勇哥23 分钟前
JavaScript性能优化实战:从入门到精通
开发语言·javascript·性能优化
Dreamcatcher_AC28 分钟前
前端面试高频问题解析
前端·css·html
Irene199132 分钟前
JavaScript 常见算法复杂度总结(大O表示法)
javascript·算法