首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态svg xlink:href没有在浏览器中表示图标

动态svg xlink:href没有在浏览器中表示图标
EN

Stack Overflow用户
提问于 2019-11-04 15:07:04
回答 1查看 1.1K关注 0票数 3

我在Vue单文件组件中有一个选项卡结构,其中使用sprite和中的动态变量加载图标。

代码语言:javascript
复制
<svg class="w-4 h-4 fill-current text-blue-500 mb-2 mx-auto">
<use class="h-4 w-4" :xlink:href="`@/assets/ui-icons.svg#${tab.name}`"></use>
</svg>

结果在Chrome和safari中为空白。SVG不会被呈现,即使DEV工具显示编译后的代码的方式是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 17:33:12

假设你在利用Webpack:

@/assets/ui-icons.svg是一个相对的URI,可能是由resolve-url-loader处理的,以便在您的网站被转移时解析到SVG文件的真正URI。但是,resolve-url-loader只在transpile time运行,这里在Vue绑定(:xlink:href)中有这个URI,这个URI在运行时被更改,因此resolve-url-loader无法修复它。试着这样做:

代码语言:javascript
复制
<svg class="w-4 h-4 fill-current text-blue-500 mb-2 mx-auto">
  <use class="h-4 w-4" :xlink:href="require('@/assets/ui-icons.svg') + `#${tab.name}`"></use>
</svg>

require()调用将调用resolve-url-loader并解析到您的SVG文件,而其他调用将链接到要引用的SVG文件中的特定项。如果您有为SVG指定的其他加载程序,则需要重写它们,如下所示:

require('!resolve-url-loader!@/assets/ui-icons.svg')

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58696106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档