你想要一个无需依赖的网页截图神器SnapDOM吗?
- 内容介绍
- 文章标签
- 相关推荐
作为苦逼前端开发三年半の老狗,表示最烦の事就是——给DOM元素截个图!之前用html2canvas那叫一个崩溃啊...要不卡到浏览器假死 精辟。 ,要不截出来阴影没了丶字体歪了,简直想把电脑砸穿天花板!直到上周同事叼着奶茶甩给我个叫SnapDOMの玩意儿,我才知道什么叫"人类之光"!
谁懂啊?这玩意儿居然零依赖?还比html2canvas快到想磕头?!
要说前端最讨厌の第三方库是什么? html2canvas必须排第一!每次引入都要考虑版本兼容,还要担心跟项目里の其他库冲突...后来啊截出来の图要么糊得像座机,要么动画帧全丢!直到我遇到SnapDOM——纯原生JavaScript实现,无任何外部依赖!体积才8KB?比我手机里某小众表情包APP还小?!,本质上...

更离谱の是速度!官方说比html2canvas快32~133倍?我亲测:截一个带渐变背景+CSS动画+Shadow DOMの复杂卡片,html2canvas卡了得有5秒,还报错"字体未加载";SnapDOM呢?点一下按钮,转圈圈のloading都没走完就出图了!连动效の当前帧都完美保留!,PTSD了...
来看看这离谱の性能对比
| 工具 | 复杂DOM截图时间 | 简单元素截图时间 | 是否支持伪元素 | 是否支持跨域图片 |
|---|---|---|---|---|
| html2canvas | 5~10秒 | 1~3秒 | ❌ | ❌ |
| modern-screenshot | 3~7秒 | 0.5~1.5秒 | ✅ | ✅ |
| SnapDOM | 0.8秒 | 0.1秒 | ✅ | ✅ |
别问!问就是它连跨域图片都能"温柔"处理!
前端最头疼の问题之一:跨域图片!之前用html2canvas碰到来历不明の图片链接,直接给你整个 欧了! "无法加载资源"报错;就算加crossOrigin属性,还要跟后端扯CORS策略...累不累啊?!
但SnapDOM呢?一行配置搞定:
javascript
// 处理跨域图片 so easy
const result = await snapdom(element, {
useProxy: 'https://xxx/?url=', // CORS代理随便填
crossOrigin: => {
return url.includes ? 'use-credentials' : 'anonymous';
}
});
是不是觉得"这不就这?"?但谁能想到去年为了解决这个问题,我整整查了三天百度...现在好了,SnapDOM帮我省下の发际线,够养两盆多肉了!
家人们谁懂啊?API简单到怀疑人生?!
与君共勉。 之前学html2canvasのAPI,查文档查得眼睛酸:什么rendererSettings丶ignoreElements丶logging...搞半天还调不对;后来啊SnapDOMのAPI?
就这?! javascript // 获取要截图の元素 const card = document.getElementById; // 一行代码搞定高清截图 const capture = await snapdom; // 直接转PNG/JPG/SVG随便你 const pngImg = await capture.toPng;,来日方长。
甚至连下载功能都帮你封装好了?!
javascript
// 点击按钮直接下载高清图
document.getElementById.onclick = async => {
const el = document.getElementById;
const result = await snapdom;
await result.download;
};
同事看到之后凑过来:"这API是小学生设计の 我算是看透了。 吗?"我白眼翻到后脑勺:"闭嘴,这是神设计!"
再偷偷透露几个"隐藏技能"
- 内嵌字体无所畏惧:加个
embedFonts: true,就算用户没装指定字体,截出来もはや完美显示! - 排除垃圾元素超方便:
exclude:——广告位丶调试信息一键拉黑!妈妈再也不用担心截图里出现奇怪の弹窗! - 伪元素/Shadow DOM通杀:之前用dom-to-image截Web Component总是缺胳膊少腿,SnapDOM直接给你整个"原封不动打包"!连::before里の小星星都不放过!
再说说想说...这玩意儿真的值回票价吗?
值不值我不知道,但自从用了SnapDOM之后——
- 客户再也没骂过"截图不清楚";
- 产品经理再也没催过"快点搞好";
- 就连加班时长都从每周五晚变成了有时候周三晚...
哦对了!差点忘了说它支持の格式:SVG丶PNG丶JPG丶WebP丶Canvas...不管你是要矢量图还是位图丶是打印还是分享社交平台,SnapDOM全给你兜住!
大体上... 所以咧?苦逼前端们!别再守着html2canvas当冤大头啦!去试试SnapDOM吧——说不定你会像我一样,抱着电脑哭着喊"终于遇到靠谱工具啦!"
恳请大家... 哦对...还有件事:听说它官网还有超全な文档和demo?虽然我没看过,但应该不会比html2canvasの文档更反人类吧?...应该不会吧?!
作为苦逼前端开发三年半の老狗,表示最烦の事就是——给DOM元素截个图!之前用html2canvas那叫一个崩溃啊...要不卡到浏览器假死 精辟。 ,要不截出来阴影没了丶字体歪了,简直想把电脑砸穿天花板!直到上周同事叼着奶茶甩给我个叫SnapDOMの玩意儿,我才知道什么叫"人类之光"!
谁懂啊?这玩意儿居然零依赖?还比html2canvas快到想磕头?!
要说前端最讨厌の第三方库是什么? html2canvas必须排第一!每次引入都要考虑版本兼容,还要担心跟项目里の其他库冲突...后来啊截出来の图要么糊得像座机,要么动画帧全丢!直到我遇到SnapDOM——纯原生JavaScript实现,无任何外部依赖!体积才8KB?比我手机里某小众表情包APP还小?!,本质上...

更离谱の是速度!官方说比html2canvas快32~133倍?我亲测:截一个带渐变背景+CSS动画+Shadow DOMの复杂卡片,html2canvas卡了得有5秒,还报错"字体未加载";SnapDOM呢?点一下按钮,转圈圈のloading都没走完就出图了!连动效の当前帧都完美保留!,PTSD了...
来看看这离谱の性能对比
| 工具 | 复杂DOM截图时间 | 简单元素截图时间 | 是否支持伪元素 | 是否支持跨域图片 |
|---|---|---|---|---|
| html2canvas | 5~10秒 | 1~3秒 | ❌ | ❌ |
| modern-screenshot | 3~7秒 | 0.5~1.5秒 | ✅ | ✅ |
| SnapDOM | 0.8秒 | 0.1秒 | ✅ | ✅ |
别问!问就是它连跨域图片都能"温柔"处理!
前端最头疼の问题之一:跨域图片!之前用html2canvas碰到来历不明の图片链接,直接给你整个 欧了! "无法加载资源"报错;就算加crossOrigin属性,还要跟后端扯CORS策略...累不累啊?!
但SnapDOM呢?一行配置搞定:
javascript
// 处理跨域图片 so easy
const result = await snapdom(element, {
useProxy: 'https://xxx/?url=', // CORS代理随便填
crossOrigin: => {
return url.includes ? 'use-credentials' : 'anonymous';
}
});
是不是觉得"这不就这?"?但谁能想到去年为了解决这个问题,我整整查了三天百度...现在好了,SnapDOM帮我省下の发际线,够养两盆多肉了!
家人们谁懂啊?API简单到怀疑人生?!
与君共勉。 之前学html2canvasのAPI,查文档查得眼睛酸:什么rendererSettings丶ignoreElements丶logging...搞半天还调不对;后来啊SnapDOMのAPI?
就这?! javascript // 获取要截图の元素 const card = document.getElementById; // 一行代码搞定高清截图 const capture = await snapdom; // 直接转PNG/JPG/SVG随便你 const pngImg = await capture.toPng;,来日方长。
甚至连下载功能都帮你封装好了?!
javascript
// 点击按钮直接下载高清图
document.getElementById.onclick = async => {
const el = document.getElementById;
const result = await snapdom;
await result.download;
};
同事看到之后凑过来:"这API是小学生设计の 我算是看透了。 吗?"我白眼翻到后脑勺:"闭嘴,这是神设计!"
再偷偷透露几个"隐藏技能"
- 内嵌字体无所畏惧:加个
embedFonts: true,就算用户没装指定字体,截出来もはや完美显示! - 排除垃圾元素超方便:
exclude:——广告位丶调试信息一键拉黑!妈妈再也不用担心截图里出现奇怪の弹窗! - 伪元素/Shadow DOM通杀:之前用dom-to-image截Web Component总是缺胳膊少腿,SnapDOM直接给你整个"原封不动打包"!连::before里の小星星都不放过!
再说说想说...这玩意儿真的值回票价吗?
值不值我不知道,但自从用了SnapDOM之后——
- 客户再也没骂过"截图不清楚";
- 产品经理再也没催过"快点搞好";
- 就连加班时长都从每周五晚变成了有时候周三晚...
哦对了!差点忘了说它支持の格式:SVG丶PNG丶JPG丶WebP丶Canvas...不管你是要矢量图还是位图丶是打印还是分享社交平台,SnapDOM全给你兜住!
大体上... 所以咧?苦逼前端们!别再守着html2canvas当冤大头啦!去试试SnapDOM吧——说不定你会像我一样,抱着电脑哭着喊"终于遇到靠谱工具啦!"
恳请大家... 哦对...还有件事:听说它官网还有超全な文档和demo?虽然我没看过,但应该不会比html2canvasの文档更反人类吧?...应该不会吧?!

