记录一下vue3中如何使用svg图标,vue2中大家常用iconfont字体图标,现在vue3大家都又推荐svg的方式使用图表,包括elementplus组件库也变成使用svg方式引用图标。
1、创建svg组件 components/IconSvg.vue
<template>
<svg class="symbol-icon-svg" aria-hidden="true">
<use :xlink:href="iconSvg"></use>
</svg>
</template>
<!-- 选项式 -->
<!-- <script>
export default {
name: "IconSvg",
props: {
svgName: {
type: String,
required: true,
}
},
computed: {
iconSvg() {
return `#${this.svgName}`
}
}
}
</script> -->
<!-- 组合式 -->
<script setup>
import { defineProps, computed } from "vue";
const props = defineProps({
svgName: {
type: String,
required: true,
}
})
const iconSvg = computed(() => `#${props.svgName}`)
</script>
<style scoped>
.symbol-icon-svg {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
</style>
2、去阿里iconfont下载图标
拷贝下载的iconfont.js文件放到项目中
3、在main.js中全局使用
// 全局使用svg组件 iconfont svg
import "./assets/iconfont/iconfont.js"
import IconSvg from "@/components/IconSvg/IconSvg.vue";
const app = createApp(App)
app.component("IconSvg", IconSvg);
app.mount('#app')
4、在组件中使用
<template>
<div>
<IconSvg class="iconf" svg-name="wh-a-tiaochawenjuan1Copy1" ref="elsvg" />
</div>
</template>
效果