html2canvas 是前端常用的 DOM 转图片库,核心逻辑是将页面 DOM 节点渲染为 Canvas,再转换为 Base64 或 Blob 格式的图片。在实际开发中,我们常遇到截图模糊、跨域空白、滚动内容截取不全等问题。以下整理了 9 个高频实战场景,涵盖基础用法到复杂性能优化,包含代码示例与关键参数配置。
一、基础用法:DOM 转 Base64 图片
适用于简单场景(如生成证书、截图分享),无需复杂配置。
1. 安装与环境准备
npm install html2canvas --save
在模块化项目(Vue/React/Angular)中引入:
import html2canvas from 'html2canvas';
非模块化项目可直接通过 CDN 引入:
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/html2canvas.min.js"></script>
2. 核心实现逻辑
假设页面上有一个目标容器 targetDom 和预览区域 previewImg。触发截图时,先获取 DOM 节点,调用 html2canvas 生成 Canvas,最后转为图片数据。
document.querySelector('#btn').addEventListener('click', async () => {
const targetDom = document.getElementById('targetDom');
// 生成 Canvas,scale: 2 可避免 Retina 屏模糊
const canvas = await html2canvas(targetDom, {
scale: 2,
useCORS: true, // 允许跨域图片
logging: false, // 关闭控制台日志
backgroundColor: null // 保留 DOM 原有背景
});
base64Img = canvas.(, );
.(). = base64Img;
link = .();
link. = base64Img;
link. = ;
link.();
});

