ATSvg

微信小程序能不能用 SVG

承接搜索意图:国内场景

首页 › SVG 使用指南 › 微信小程序能不能用 SVG

能用,但不是「把 <svg> 标签写进页面」这种用法。小程序没有浏览器的 DOM,WXML 里不能直接内联 SVG 节点;常见做法是把 SVG 当图片资源、当背景图,或转成 base64 / data URI 后交给支持它的组件。不同基础库版本与组件表现有差异,正式上线前以微信官方文档和真机实测为准。

本文目录

三条常见路径

① 把 SVG 文件转成 base64 data URI,放进 WXSS 的 background-image;② 交给 image 组件的 src(能否直接解析 .svg 取决于基础库与平台,稳妥起见先转 PNG 或 data URI);③ 需要动态换色时,把路径数据交给支持 SVG 渲染的第三方组件或 canvas 绘制。

体积与包体限制要算进去

小程序主包有体积上限,几十个图标如果都以内联 base64 塞进 WXSS,会比 PNG 还大(base64 约多 1/3)。先用 svgo 压路径、去掉注释与元数据,再决定内联还是放静态资源。图标多时建议做一张雪碧图或按需加载。

换色与深色模式

data URI 里的 SVG 同样是独立文档,currentColor 不继承页面样式。要跟随主题,最实用的是准备两套颜色的文件(或用支持 mask 的组件),在主题切换时替换资源地址。

上线前核对

确认所用基础库版本、目标组件是否支持对应格式、iOS 与 Android 真机各测一遍,并留意平台对资源域名与 HTTPS 的要求。涉及平台能力的细节请以微信官方文档为准,本文只给通用做法。

常见问题

WXML 里能直接写 <svg> 吗?不能。小程序没有浏览器 DOM,需要把 SVG 作为图片资源 / 背景图,或借助支持 SVG 渲染的组件。
为什么模拟器正常、真机不显示?常见于 data URI 编码、组件对格式的支持差异或资源域名限制,以真机和官方文档为准逐项排查。

← 返回全部使用指南 · 许可与使用常见问题 →

相关素材 · 12 个素材

继续读

指南总览