由于 trendforge.devlive.top 访问受限,请切换到 trendforge.devlive.org 域名
5分钟快速上手SnapDOM
SnapDOM是一个极速、高精度的DOM捕获引擎,能将HTML元素转换为多种图像格式。
环境要求
支持的操作系统
运行环境
所需工具
编写HTML和JavaScript
安装和运行命令
操作步骤
选择安装方式
根据你的项目类型选择合适的安装方式。推荐使用CDN快速体验,或使用npm进行项目开发。
npm install snapdom
预期结果::在package.json的dependencies中可以看到snapdom依赖
如果你只是快速体验,可以直接使用CDN方式,跳过此步骤。
创建测试HTML文件
创建一个简单的HTML文件,包含一个要捕获的元素和调用SnapDOM的JavaScript代码。
echo '<!DOCTYPE html><html><head><title>SnapDOM Test</title><script src="https://cdn.jsdelivr.net/npm/snapdom@latest/dist/snapdom.js"></script></head><body><div id="capture-me" style="width:300px; height:200px; background:linear-gradient(45deg, #ff6b6b, #4ecdc4); border-radius:10px; padding:20px; font-family:Arial;"><h1 style="color:white;">Hello SnapDOM!</h1><p style="color:white;">This element will be captured.</p></div><button onclick="capture()" style="margin-top:20px; padding:10px 20px;">Capture to PNG</button><div id="result"></div><script>async function capture() { const el = document.getElementById("capture-me"); const png = await snapdom.toPng(el, { embedFonts: true }); document.getElementById("result").innerHTML = ""; document.getElementById("result").appendChild(png); }</script></body></html>' > snapdom-test.html
预期结果::生成一个名为snapdom-test.html的文件
这个文件使用CDN方式引入SnapDOM,无需本地安装。
运行并测试捕获功能
在浏览器中打开HTML文件,测试元素捕获功能。
open snapdom-test.html
预期结果::浏览器打开页面,显示一个渐变色的卡片和捕获按钮。点击按钮后,下方会显示捕获的PNG图像。
在Windows上可以使用start snapdom-test.html命令,Linux上可以使用xdg-open snapdom-test.html。
尝试不同的捕获选项
修改代码以测试不同的捕获选项,如导出为JPG或调整缩放比例。
// 在capture函数中修改选项: const jpg = await snapdom.toJpg(el, { quality: 0.8, scale: 2 });
预期结果::捕获的图像将以JPG格式保存,质量为80%,分辨率提高2倍。
scale选项可以用于生成更高分辨率的图像,适用于打印或高清显示。
验证SnapDOM工作正常
确认SnapDOM成功捕获DOM元素并转换为图像。
快速提示
对于包含外部字体或图标的元素,确保添加crossorigin="anonymous"属性到<link>标签。
使用embedFonts: true选项可以确保文本使用正确的字体渲染。
对于需要重复捕获同一元素的场景,使用reusable capture模式可以提升性能。
如果遇到CORS问题,可以考虑使用useProxy选项或确保资源服务器设置了正确的CORS头。
常见问题
捕获的图像缺少字体或图标
检查外部CSS和字体是否带有crossorigin="anonymous"属性,或尝试使用embedFonts: true选项。
控制台出现CORS错误
确保所有跨域资源(图片、字体、CSS)的服务器都设置了Access-Control-Allow-Origin头。
捕获速度慢
尝试使用fast: true选项跳过空闲延迟,或检查是否有大量嵌套元素需要处理。
在Safari中字体未正确嵌入
Safari对某些字体嵌入有限制,尝试使用localFonts选项显式指定字体,或检查Safari的兼容性说明。
下一步
探索导出格式
尝试使用toSvg、toCanvas、toBlob等不同导出方法,了解各种格式的用途。
查看完整API文档
访问snapdom.dev/docs查看所有选项、插件和缓存策略的详细说明。
集成到现有项目
将SnapDOM集成到你的前端项目中,用于生成分享图片、报告或用户界面截图。
尝试插件系统
了解SnapDOM的插件系统,开发自定义导出器或处理逻辑。
相关项目推荐
affaan-m/ECC
智能体性能优化系统。为Claude Code、Codex、Opencode、Cursor等工具提供技能、本能、记忆、安全及研究优先的开发支持。
react/react
用于Web和原生用户界面的库。
facebook/react
适用于网页和原生用户界面的开发库
trekhleb/javascript-algorithms
📝 使用 JavaScript 实现的算法与数据结构,含解释说明和延伸阅读链接
affaan-m/everything-claude-code
智能体性能优化系统。为Claude Code、Codex、Opencode、Cursor等工具提供技能、本能、记忆、安全及研究优先的开发支持。
DietrichGebert/ponytail
让你的人工智能代理像房间里最懒的高级开发人员一样思考。最好的代码是你从未编写过的代码。