⭐ 觉得好用?收藏备用,下次直接打开
— B — × — viewBox: — — 节点
SVG 代码
预览
点击右侧预览中的形状即可编辑 fill / stroke / transform 等属性
<rect>

SVG 编辑预览 把代码、可视化预览、属性面板三者绑在同一份 SVG 上:左边 CodeMirror 写代码、右边实时渲染、点节点弹属性面板改 fill / stroke / transform,再加 SVGO 压缩和多格式导出,全程浏览器本地处理,不上传任何文件。

三种修改入口

入口适合场景
代码编辑器整体重构、批量替换、加 <defs> / <linearGradient> 等结构
点击节点 + 属性面板单个形状改色 / 描边 / 旋转,无须找到对应 path
SVGO 按钮一键剥注释、合并 path、裁剪精度,看前后字节差

三者状态实时同步:编辑器改代码 → 预览刷新;预览选节点 → 面板回填当前值;面板改属性 → 代码相应位置回写。

导出格式

  • SVG / data URL / base64 — 三种文本形式,分别用于文件下载、<img src="data:..."> 内联、CSS background-image
  • PNG ×1 / ×2 / ×3 — 按 viewBox 尺寸栅格化,高清屏选 ×2、印刷选 ×3
  • JSX / Vue 模板 — 已处理好 camelCase / kebab-case、className / classstyle 对象化等差异,可直接拷进组件文件

隐私与限制

文件读取、SVG 渲染、SVGO 压缩、PNG 栅格化全部在浏览器本地完成,不会发起网络请求。注意:SVG 内若引用了外部图片(<image href="https://...">),渲染时仍会向该地址请求;解析失败时预览区会显示带行号的错误,按提示回到代码定位即可。

📍使用场景

  • 设计稿落地前端从 Figma / Sketch 导出 SVG 后,在工具里调色、压缩再贴进项目,省掉来回切矢量软件的开销。
  • 替换图标主题色拿到一份现成 icon,点中路径直接改 fill / stroke,所见即所得,不必硬找 path 索引。
  • 上线前体积压缩SVGO 一键剥掉编辑器残留的注释、ID 和过高小数精度,对照前后字节再决定要不要继续手调。
  • 转 React / Vue 组件不用脚手架,直接拷一份 JSX 或 Vue 模板,属性大小写、style 对象都已就地处理,粘贴即用。

常见问题

SVGO 压缩具体做了什么?

内置 SVGO 默认 preset,包含:删除注释和元数据、合并相邻 path、剥离无用 ID 和默认值、把过高的小数精度(如 12.3456789)裁到合理位数、压缩颜色(#ffffff#fff)等。压缩后会显示前后字节对比,常见缩减 30%-70%;如果 SVG 本身已经手写得很简洁,压缩比例会很小,属于正常。

转 JSX 和 转 Vue 模板有什么区别?

JSX:所有 kebab-case 属性转成 camelCase(stroke-widthstrokeWidthxlink:hrefxlinkHref),class 改为 classNamestyle 转成对象写法。Vue 模板:保留 kebab-case 和 classstyle 同样需要对象或字符串。两份模板都已就地处理好大小写和转义,可以直接贴进 React 或 Vue 单文件组件,不需要再跑额外脚本。

为什么 fill 改了没生效?

SVG 节点的属性可能被以下两种情况覆盖:(1)SVG 内部带有 <style> 或 class 选择器,CSS 优先级高于属性 fill="...";(2)形状本身写的是 fill="currentColor",最终颜色由外层 CSS 的 color 决定。前者删掉冲突的 <style> 或对应 class;后者把 fill 改成具体颜色即可生效。

支持多大的 SVG 文件?

几百 KB 以内的 SVG 渲染、SVGO 压缩、属性编辑都能即时响应;1MB 以上或节点数过万的(典型是完整地图轮廓)SVGO 可能要 1-2 秒,CodeMirror 编辑器在超大文件下高亮也会卡。这类 SVG 多半是设计软件未做合并的导出物,建议在源软件里做布尔合并 / 简化再粘进来。

PNG ×1 / ×2 / ×3 是什么意思?

把 SVG 按 viewBox 尺寸的 1 / 2 / 3 倍像素栅格化导出。×2 适配高清屏(Retina 等 2x DPR 显示)、×3 适配印刷或大屏播放。如果导出 PNG 模糊,多半是原 SVG viewBox 本身太小(如 0 0 24 24,×1 就只有 24×24 像素),再高倍数也是放大模糊——改大 viewBox 或直接选 ×3 即可。

改了节点属性后能撤销吗?

可以。属性面板每次改动都会写回左侧代码编辑器,CodeMirror 自带 ⌘/Ctrl + Z 撤销⌘/Ctrl + ⇧ + Z 重做栈,所有编辑(输入代码、属性面板、SVGO 压缩、格式化)都纳入同一条历史。重做后预览会同步刷新;属性面板若还选着原节点,控件会读到最新值。