vue中使用use引入的svg怎么添加title

项目框架:

vue2

使用场景:

我们项目中的svg文件比较多,每个都copy里面的svg代码的话,会造成需要写很多个vue文件,于是乎当时采用了use的方式引入了svg文件

代码如下(当然中间省去了其他步骤,use方式引入svg不是本篇重点)

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName"/>
  </svg>
</template>
遇到的问题

每个icon好像默认使用了文件名称作为title,也就是悬浮上去提示的文字。所以需要添加title

svg直接添加title是无效的,必须使用svg自己的title标签,直接添加到use的外面也是无效的,如下示例

<!-- 无效代码1 -->
<template>
  <svg :class="svgClass" aria-hidden="true" :title="title">
    <use :xlink:href="iconName"/>
  </svg>
</template>

<!-- 无效代码2 -->
<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName" :title="title"/>
  </svg>
</template>

<!-- 无效代码3 -->
<template>
  <svg :class="svgClass" aria-hidden="true">
    <title v-if="title">{{ title }}</title>
    <use :xlink:href="iconName"/>
  </svg>
</template>
最后的实现

需要加在use的里面

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName">
      <title v-if="title">{{ title }}</title>
    </use>
  </svg>
</template>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3使用SVG矢量图,你可以按照以下步骤进行操作: 1. 在`main.js`或`main.ts`文件引入`vite-plugin-svg-icons`插件并注册全局的SVG图标组件。你可以使用以下代码: ```javascript import 'vite-plugin-svg-icons/register'; import svgIcon from './components/SvgIcon.vue'; app.component('svg-icon', svgIcon); ``` 这样就可以在整个应用程序使用`<svg-icon>`组件了。\[1\] 2. 在`src/components`目录下创建一个名为`SvgIcon.vue`的组件文件,并添加以下代码: ```vue <template> <svg :class="svgClass" aria-hidden="true" v-bind="$attrs" v-on="$listeners"> <use :xlink:href="iconName"/> </svg> </template> <script> export default { name: 'SvgIcon', props: { iconClass: { type: String, required: true, }, className: { type: String, default: '', }, }, computed: { iconName() { return `#icon-${this.iconClass}`; }, svgClass() { if (this.className) { return `svg-icon ${this.className}`; } return 'svg-icon'; }, }, }; </script> <style scoped> .svg-icon { width: 10em; height: 10em; fill: currentColor; overflow: hidden; } </style> ``` 这个组件将接受一个`iconClass`属性,用于指定要显示的SVG图标的类名。你可以在模板使用`<svg-icon>`标签,并通过`icon-class`属性传递类名,如下所示: ```vue <svg-icon icon-class="book" class="w-14 h-14 mr-4 text-primary"></svg-icon> ``` 这样就可以在Vue3 + Vite使用SVG矢量图了。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [vue使用svg矢量图](https://blog.csdn.net/qq_44376306/article/details/123497667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值