LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網站管理員

snapDOM:一個 100 % 純 Web API、零依賴、極致性能的 DOM-to-Image 截圖庫,代替 html2canvas

admin
2025年7月29日 12:2 本文熱度 1090

天下苦html2canvas久矣,終于可以好好截個dom圖了

前端項目里,把任意 HTML 片段變成可下載的圖片 往往是一件麻煩事:樣式丟失、字體跑偏、跨域圖片報錯、性能拖慢頁面……

html2canvas太卡了,而且各種bug,又不更新,實在用的難受。

snapDOM 正是為了解決這些痛點而生——它來自 Zumly 團隊,是一個 100 % 純 Web API、零依賴、極致性能 的 DOM-to-Image 庫。


它到底能做什么?

  • 全量捕獲
    不管是普通元素、偽元素(::before / ::after / ::first-letter)、還是 Shadow DOM / Web Component,統(tǒng)統(tǒng)能打包進最終圖片。
  • 多格式輸出
    默認生成 SVG,一行代碼就能轉成 PNG / JPG / WebP / Canvas,甚至直接觸發(fā)下載。
  • 樣式與資源原樣保留
    內聯(lián)字體、背景圖、Icon Font,視覺完全一致。
  • 跨域圖片兜底支持
    自帶 crossOrigin,再配合 useProxy,解決 CORS。
  • 飛快
    從 v1.8.0 以來速度翻倍,復雜大頁面也能在毫秒級完成截圖。官方基準測試里,相比 html2canvas 快了一個數(shù)量級。

一分鐘上手

安裝

# NPM
npm i @zumer/snapdom

# 或者 Yarn
yarn add @zumer/snapdom

CDN 用戶直接引入:

<script src="https://cdn.jsdelivr.net/npm/@zumer/snapdom/dist/snapdom.min.js"></script>

ESM 寫法:

import { snapdom } from 'https://cdn.jsdelivr.net/npm/@zumer/snapdom/dist/snapdom.mjs';

最簡用法

const target = document.querySelector('#capture-me');

// 一句到位:拿到 PNG 節(jié)點并掛到頁面
const imgEl = await snapdom.toPng(target);
document.body.appendChild(imgEl);

復用導出

const capture = await snapdom(target, { scale2 }); // 2× 像素

await capture.download({ format'jpg'filename'my-shot' }); // 下載 JPG

snapdom() 返回的對象還能:

capture.toCanvas();
capture.toBlob();   // 拿純 SVG Blob
capture.toWebp();   // 生成 WebP

常用選項

{
  compresstrue,        // 精簡多余樣式
embedFontsfalse,     // 是否內聯(lián)字體(圖標字體默認強制)
scale1,              // 整體縮放倍率
width400,            // 指定輸出寬度(保持比例)
height200,           // 指定輸出高度(保持比例)
backgroundColor'#fff',
quality0.9,          // JPG / WebP 質量
useProxy'https://corsproxy.io/?url='// CORS 兜底
}

Tip:同時設置 scale 與 width / height 時,scale 優(yōu)先生效。


性能加速技巧

1. 資源預加載

頁面復雜或圖片眾多時,先執(zhí)行一次:

import { preCache } from '@zumer/snapdom';

await preCache(document.body); // 預熱所有外鏈資源

2. 按需過濾

排除無關節(jié)點,進一步壓縮執(zhí)行時間:

snapdom(target, {
  exclude: ['.debug-banner''.ad-slot']
});

何時不適合用?

  • ? 需要截圖 <iframe> 時(暫不支持)。
  • ? Safari 嚴格要求 WebP,而你必須用 WebP 格式,這會被自動降級成 PNG——介意的話請手動改用其他格式。

貢獻 & 本地開發(fā)

git clone https://github.com/zumerlab/snapdom.git
cd snapdom
npm install
npm run compile      # 打包 ESM / CJS / UMD
npm test             # Vitest + Playwright
npm run test:benchmark

歡迎提 PR!


資源鏈接

    資源包自取吧兄弟們:

    https://pan.xunlei.com/s/VOVfyTKY-9Ph8l8wQPRb27ukA1 

    動手試試,給你的截圖體驗提個速吧 ??

    ?


    該文章在 2025/7/29 12:05:22 編輯過
    關鍵字查詢
    相關文章
    正在查詢...
    點晴ERP是一款針對中小制造業(yè)的專業(yè)生產管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內大量中小企業(yè)的青睞。
    點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
    點晴WMS倉儲管理系統(tǒng)提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
    點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
    Copyright 2010-2025 ClickSun All Rights Reserved

    黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
    亚洲国产原创AV在线播放 | 中文字幕1级精品视频在线 午夜性色福利网 | 在线看黄v免费网站免费 | 亚洲日本一本在线 | 羞羞影院午夜男女爽爽在线观看 | 亚洲国产中文精品高清在线 |