项目框架:
vue2
使用场景:
我们项目中的svg文件比较多,每个都copy里面的svg代码的话,会造成需要写很多个vue文件,于是乎当时采用了use的方式引入了svg文件
代码如下(当然中间省去了其他步骤,use方式引入svg不是本篇重点)
html
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconName"/>
</svg>
</template>
遇到的问题
每个icon好像默认使用了文件名称作为title,也就是悬浮上去提示的文字。所以需要添加title
svg直接添加title是无效的,必须使用svg自己的title标签,直接添加到use的外面也是无效的,如下示例
html
<!-- 无效代码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的里面
html
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconName">
<title v-if="title">{{ title }}</title>
</use>
</svg>
</template>