一、装插件

// 1、先执行这条命令
npm i fast-glob -D
// 2、再执行这条命令
npm i vite-plugin-svg-icons -D

二、创建SVG组件

如图所示创建文件,并写入如下代码

在这里插入图片描述

<script setup lang="ts">
import { computed } from "vue";
 
const props = defineProps({
  iconClass: {
    type: String,
    required: true,
  },
  className: {
    type: String,
    default: "",
  },
  iconColor: {
    type: String,
    default: "CurrentColor",
  },
});
const iconName = computed(() => `#icon-${props.iconClass}`);
const svgClass = computed(() => {
  if (props.className) {
    return "svg-icon " + props.className;
  } else {
    return "svg-icon";
  }
});
</script>
<template>
  <svg :class="svgClass" aria-hidden="true" :fill="iconColor">
    <use :xlink:href="iconName" />
  </svg>
</template>
 
<style scoped>
.svg-icon {
  // svg 图标默认宽高,根据个人使用情况自行调整
  width: 20px;
  height: 20px;
  fill: currentColor;
  overflow: hidden;
}
</style>

二、main.ts中全局注册

import { createApp } from 'vue'
import App from './App.vue'

// svg 相关
import 'virtual:svg-icons-register'
import SvgIcon from './components/svgIcon/index.vue'

// 导入 pinia
import { createPinia } from 'pinia'
// 创建 pinia 实例
const pinia = createPinia()
app
  .component('svg-icon', SvgIcon)
  .use(pinia)
  .mount('#app');

在这里插入图片描述

三、来到 vite.config.ts

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path";

// svg plugin
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'

export default defineConfig({
  plugins: [
    vue(),
    // 修改 svg 相关配置
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(__dirname, './src/assets/svg')],
    })],
})

在这里插入图片描述

四、在代码中使用

  <svg-icon icon-class="close" />

在这里插入图片描述

五、注意点

若想修改 svg 的颜色,记得将 svg图片代码中的 fill属性删除删除

在这里插入图片描述
在这里插入图片描述

六、我如何使用svg

我平时用的比较多的就是 阿里巴巴矢量图库,具体操作如下动图。

在这里插入图片描述

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐