vue3 + vite + antdv 项目中自定义图标
前言:
去iconfont-阿里巴巴矢量图标库 下载自己需要的icon图标,下载格式为svg;项目中在存放静态资源的文件夹下 assets 创建一个存放svg格式的图片的文件夹。
步骤:
1、安装vite-plugin-svg-icons
npm i vite-plugin-svg-icons -D
2、创建svgIcon.vue组件
<template>
<svg aria-hidden="true" :class="svgClass">
<use :xlink:href="symbolId" :fill="props.color" />
</svg>
</template>
<script>
import { defineComponent } from "vue";
export default defineComponent({
name: "svg-icon",
});
</script>
<script setup>
import { computed } from "vue";
const props = defineProps({
prefix: {
type: String,
default: "icon",
},
name: {
type: String,
require: true,
},
color: {
type: String,
default: "#333",
},
className: {
type: String,
default: "",
},
});
const symbolId = computed(() => `#${props.prefix}-${props.name}`);
console.log(symbolId.value, "symbolIdsymbolId");
const svgClass = computed(() => {
if (props.className) {
return `svg-icon ${props.className}`;
}
return "svg-icon";
});
</script>
<style>
.svg-icon {
width: 1em;
height: 1em;
vertical-align: -0.1em;
/* 因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 */
fill: currentColor;
/* 定义元素的颜色,currentColor是一个变量,这个变量的值就表示当前元素的color值,如果当前元素未设置color值,则从父元素继承 */
overflow: hidden;
}
</style>
3、在main.js文件中全局注册
4、在vite.config.js文件中进行配置
5、在其他组件中使用
效果: