讲师中心 微信公众号
AI工具推荐 视频效率加速

uni-app怎么使用SVG uni-app引入SVG矢量图方法【配置】

老宇同学_3186

老宇同学_3186

发布时间:2026-04-21 13:20:27

|

1004人浏览过

|

来源于php中文网

原创

uni-app中SVG跨端渲染的正确方案是:内联SVG字符串+v-html(仅H5)或转为字体图标(全平台推荐)。小程序不支持<image>加载SVG,<svg>标签会被忽略,v-html在小程序中被过滤;字体图标兼容性最好,内联SVG适用于H5动态场景,canvas渲染仅作最后兜底。

uni-app怎么使用svg uni-app引入svg矢量图方法【配置】

uni-app 中直接用 <image> 标签加载 SVG 文件会失败

因为绝大多数小程序平台(微信、支付宝、字节)不支持 <image> 直接渲染 SVG,H5 环境虽部分支持,但行为不一致(比如微信小程序里显示为空白,控制台无报错)。这不是路径写错或路径没配对,是底层限制。

真正能稳定跨端渲染 SVG 的方式只有两种:内联 SVG 或转为字体图标。前者适合单图、动态修改场景;后者适合图标库、多图标复用。

  • 不要把 SVG 放进 static 目录后用 <image src="/static/icon.svg"> —— 小程序里必然不显示
  • 不要在 template 里直接写 <svg>...</svg> 并期望它被自动解析 —— uni-app 不做 HTML 解析,<svg> 标签会被当作文本节点忽略
  • 如果用 v-html 渲染 SVG 字符串,H5 可行,但小程序平台会过滤掉 <svg> 及其子标签(安全策略)

推荐方案:用 require 内联 SVG 字符串 + v-html(仅限 H5)

适用于 H5 端为主、少量 SVG 图标、需动态着色或尺寸控制的场景。本质是把 SVG 当作字符串读入,再由浏览器原生渲染。

注意:此法在微信/支付宝等小程序中无效,编译时不会报错,但运行时空白。

// 在 .vue 文件的 script 中
export default {
  data() {
    return {
      svgContent: ''
    }
  },
  onLoad() {
    // ✅ 正确写法:用 require 读取 SVG 文件内容(必须是本地文件,不能是网络地址)
    this.svgContent = require('@/static/logo.svg')
  }
}

模板中使用:

<div v-html="svgContent" class="svg-wrapper"></div>

补充要点:

  • require 路径必须是相对路径或以 @/ 开头的别名路径,不能是变量拼接(否则 webpack 无法静态分析)
  • SVG 文件建议手动精简:删掉 <?xml ...?>、注释、多余命名空间(如 xmlns:xlink),只保留 <svg>...</svg> 结构
  • H5 下可加 class 控制宽高,但 SVG 内部的 width/height 属性优先级更高,建议统一用 viewBox + CSS 控制缩放

真正跨端方案:转成字体图标(推荐用 iconfont + uni-icon)

这是目前最成熟、兼容性最好的方案。uni-app 官方 uni-icon 组件底层就是基于字体图标,天然支持所有平台。

操作流程简单:去 iconfont.cn 创建项目 → 上传 SVG → 下载字体包 → 替换 static/fonts/ 下对应文件 → 在 uni.scss 中配置 @font-face → 使用 <uni-icon> 或自定义 class。

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载

关键配置示例(static/fonts/iconfont.css):

@font-face {
  font-family: "iconfont";
  src: url('iconfont.woff2') format('woff2'),
       url('iconfont.woff') format('woff'),
       url('iconfont.ttf') format('truetype');
}

然后在 uni.scss 里引入:

@import '@/static/fonts/iconfont.css';

使用时:

<uni-icon type="&#xe601;" size="24"></uni-icon>
<span class="iconfont">&#xe601;</span>

注意事项:

  • 确保字体文件放在 static/fonts/ 下(不能放 assets/,否则 H5 和小程序资源路径处理逻辑不同)
  • Unicode 编码要和 iconfont 后台生成的一致,复制时注意别带空格或不可见字符
  • 字体图标默认不支持渐变、滤镜等 SVG 特性,如有复杂动效需求,得回归内联 SVG + H5 专用分支

小程序平台特殊处理:用 canvas 渲染 SVG(极少数场景)

仅当必须在小程序里渲染动态 SVG(比如图表、简易动画),且无法接受字体图标限制时考虑。本质是用第三方库(如 canvg)将 SVG 字符串绘制成 canvas 图片。

但代价明显:体积大(canvg gzip 后仍 >100KB)、性能差(每次重绘都要解析+绘制)、不支持交互事件(canvas 是位图)。

实操建议:

  • 先确认是否真需要 SVG 动态能力 —— 多数图标类需求,字体图标 + CSS 动画已足够
  • 若必须用,只在小程序平台按需引入:const canvg = uni.getSystemInfoSync().platform === 'devtools' ? null : require('canvg')
  • 避免在 onLoad 中同步执行耗时渲染,应加 loading 状态,并用 setTimeout 延迟触发,防止卡顿

跨端 SVG 最难的不是“怎么放进去”,而是“在哪能真正起作用”。字体图标是默认解,内联 SVG 是 H5 加餐,canvas 是最后兜底——选错路径,后面全是兼容性补丁。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2463

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

5283

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6350

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5938

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

843

2024.05.22

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

0

2026.10.14

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

0

2026.10.14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

0

2026.10.14

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

0

2026.10.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn