使用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();
        }
      );
    },
相关推荐
世界哪有真情3 分钟前
3月12日最新!Cursor无限续杯
前端·后端·cursor
TING沫5 分钟前
缓存id路由页面返回,历史路由栈
vue.js·缓存
Archie_IT11 分钟前
使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏
前端·人工智能·大模型·html·aigc·deepseek
柒@宝儿姐16 分钟前
Vue动态修改页面的 title 浏览器页签名称
前端·javascript·vue.js
颜酱22 分钟前
后台系统从零搭建(三)—— 具体页面之菜单管理和角色管理
前端·javascript·react.js
代码猫罐头23 分钟前
和Vue3全局属性说再见?
vue.js
OpenTiny社区26 分钟前
Node.js 技术原理分析系列5——理解 Node.js 中的 ABI 稳定
前端·node.js
程序员总部34 分钟前
Spring Boot中的YML配置列表的详细解析
vue.js
the_one37 分钟前
手写 AJAX:从零实现一个简洁的异步请求函数
前端·javascript
xulihang39 分钟前
vCard名片二维码在前端的生成与扫描
前端·javascript·图像识别