iconfont是阿里为我们提供的图标库,里面包含了很多图标,基本能满足我们的全部需求。
-
iconfont官方网站,如下所示:
https://www.iconfont.cn/ -
我们已经把提供了常用的图标,放在
src/icons/iconfont
目录下面,如下所示:
-
我们为iconfont的使用,提供了一个全局组件svg-icon,代码如下所示:
<template>
<div class="svg-icon">
<svg :class="`${className}`" :style="`color:${color};`" aria-hidden="true">
<use :xlink:href="iconName" />
</svg>
</div>
</template>
<script setup lang="ts" name="SvgIcon">
import { computed } from 'vue'
const props = defineProps({
icon: {
type: String,
required: true
},
color: {
type: String,
default: ''
},
className: {
type: String,
default: ''
}
})
// https://www.iconfont.cn 图标库需使用前缀 icon- 才能匹配
const iconName = computed(() => `#icon-${props.icon.replace('icon-', '')}`)
</script>
<style scoped>
.svg-icon svg {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
flex-shrink: 0;
}
</style>
- 有了上面的svg-icon组件,我们使用iconfont图标就很简单,如下所示:
<svg-icon icon="icon-user"></svg-icon>