1、安装
npm install vite-plugin-svg-icons -D
2、在vite.config.ts中
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
const { resolve } = require('path');
plugins:[
createSvgIconsPlugin({
// 配置你存放 svg 图标的目录
iconDirs: [resolve(process.cwd(), 'svg文件夹所在的目录')],//例如:src/images/svg
// 定义 symbolId 格式
symbolId: 'icon-[dir]-[name]',
})
]
3、封装一个svg组件
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconName" :fill="color"></use>
</svg>
</template>
<script>
import { computed, defineComponent } from 'vue';
export default defineComponent({
props: {
iconClass: {
type: String,
required: true,
},
className: {
type: String,
default: '',
},
color: {
type: String,
default: '#889aa4',
},
},
setup(props) {
return {
iconName: computed(() => `#icon-${props.iconClass}`),
svgClass: computed(() => {
if (props.className) {
return `svg-icon ${props.className}`;
}
return 'svg-icon';
}),
};
},
});
</script>
<style scope>
.svg-icon {
width: 1em;
height: 1em;
fill: currentColor;
vertical-align: middle;
}
</style>
4、使用
//在main.ts中
import 'virtual:svg-icons-register';
①、使用时,如果想按需引入
// 在具体使用的地方
import SvgIcon from '组件地址'
<svg-icon iconClass="${图标文件的名称}" class="*****"></svg-icon>
例如:arrow.svg 使用的时候iconClass ="arrow"
②、全局引入
//在main.ts中
import svgIcon from '组件地址';
app.component('svgIcon', svgIcon);
4、更改图标颜色
打开svg图标,把图标中的 fill="具体的颜色“ 改为 fill=currentColor
在页面中使用的时候,直接通过给fill赋值,来更改图标颜色的显示。