使用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();
        }
      );
    },
相关推荐
2501_9153738810 分钟前
Electron读取本地文件
前端·javascript·electron
巴巴_羊31 分钟前
React useMemo函数
前端·react.js·前端框架
一口一个橘子38 分钟前
ctfshow web入门 web46
前端·web安全·网络安全
hie988941 小时前
html5天气预报卡片设计效果
javascript
巴巴_羊2 小时前
React memo
前端·javascript·react.js
zhangguo20022 小时前
react native和react在跨端架构上有什么区别?
javascript·react native·react.js
阿珊和她的猫2 小时前
React Native 开发环境搭建:从零开始
javascript·react native·react.js
app1e2343 小时前
ctfshow web入门 php特性(89-115)
android·前端·php
Humble-H5 小时前
Vue 3 动态 ref 的使用方式
前端·javascript·vue.js
醉书生ꦿ℘゜এ5 小时前
threejs学习002-场景中添加几何体
javascript·vue.js·学习·threejs