当前位置: 首页 > news >正文

vite里带渐变的svg渲染失败

背景

vite 项目使用 svg 渲染失败

<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M9.03063 9.07812C10.6708 9.07812 12.1368 10.1017 12.7015 11.6416L12.892 12.1631C13.1256 12.8008 12.6542 13.4764 11.975 13.4766H4.02184C3.3426 13.4766 2.8704 12.8008 3.10388 12.1631L3.29528 11.6416C3.86003 10.1018 5.32605 9.07812 6.96618 9.07812H9.03063ZM7.99938 2.47656C9.51198 2.47656 10.7386 3.70322 10.7386 5.21582C10.7384 6.72821 9.51183 7.9541 7.99938 7.9541C6.48698 7.95405 5.26135 6.72818 5.2611 5.21582C5.2611 3.70325 6.48683 2.47662 7.99938 2.47656Z" fill="url(#paint0_linear_8810_5731)"/>
<defs>
<linearGradient id="paint0_linear_8810_5731" x1="4.57835" y1="0.179964" x2="6.53322" y2="8.97691" gradientUnits="userSpaceOnUse">
<stop stop-color="#666666"/>
<stop offset="1"/>
</linearGradient>
</defs>
</svg>

原因

如果你项目里使用了 SVG Loader 转组件(比如 vite-svg-loader 或 @svgr/webpack),SVG loader 默认会 自动重写或去掉<defs>,导致 url(#paint0_linear_8810_5731) 无法找到对应 gradient,显示为空白。

解决

给 vite-svg-loader 添加 svgoConfig 保留<defs>

vitePlugins.push(svgLoader({svgoConfig: {plugins: [// 使用 preset-default 并禁用 cleanupIds 插件,保留 SVG 中的所有 id(如 clipPath、linearGradient、mask 等){name: 'preset-default',params: {overrides: {cleanupIds: false, // 禁用 cleanupIds 插件(注意是小写 's')},},},],},}),)

过程中问了gpt给出的各种配置因为ts类型检测的问题都不行,最后在cursor指出准确问题解决掉了

另一种简单粗暴方案,直接禁用 SVGO

vitePlugins.push(svgLoader({ svgo: false }))
  • svgo: false 表示不让 loader 去优化 SVG。
  • 优点:保证 Figma 导出的 <linearGradient><defs> 正常工作。
  • 缺点:SVG 不会压缩,但对大多数项目影响很小。
http://www.dtcms.com/a/602948.html

相关文章:

  • C语言编译器汉化安卓 | 提升开发效率,享受更流畅的编程体验
  • 双种群自适应差分进化算法 L-NTADE
  • 公司网站设计的公司兼职网站制作
  • 嵌入式Linux电源管理深度优化之系统休眠与唤醒机制实战解析
  • [QMT量化交易小白入门]-102、AI炒股项目如何迁移到a股市场全天候再平衡策略,5年历史回测中实现了62.15%
  • Python学习日记:从迷茫到灵光乍现
  • 【windows常见问题】无法以管理员身份运行
  • wordpress 音乐网站如何彻底清除网站的网页木马
  • try_lock_for 详细解析:如何使用及避免死锁
  • Elasticsearch 报错:index read-only / allow delete (api) 深度解析与解决方案
  • 敖汉旗住房和城乡建设局网站建站模板网站设计
  • 河北 石家庄 网站建设为什么建设网银网站打不开
  • 网站做任务哪些网站的网站怎么做的
  • MATLAB高阶谱分析工具箱(HOSA)解析
  • 公司网站制作需要找广告公司么中信建设有限责任公司湖南省人防建筑设计院
  • 郑州高端模板建站muiteer主题 wordpress
  • 网站策划书我与音乐wordpress评论模板怎么改
  • 网站头部代码江河建设集团有限公司网站
  • 东莞保安公司有哪些襄阳网站seo公司
  • 福田的网站建设公司windows7 wordpress
  • 专门提供做ppt小素材的网站pc端网站开发技术
  • 北京建站方案wap端是电脑还是手机
  • HLD3370AL HLD5070AL HLD9070AL HLD12070AL低压差线性稳压器70V高压防护聚能芯半导体智芯原厂技术支持
  • 111、sqlserver 表A有1亿条数据,表中每个不同值的字段B大约有100条数据,给B字段建索引和不建索引查询时性能相差多少倍?并进行分析
  • 官方网站建设专家磐石网络电子商务网站建设与维护课件
  • C++ 中的栈(Stack)数据结构与堆的区别与内存布局(Stack vs Heap)
  • 设计好网站苏州网站制作电话
  • 建材做网销哪个网站好怎么做企业网站
  • JAVA后端动态代理复习
  • 网站菜单怎么做品牌推广策划