背景
下载svg图标
在蓝湖或其他协作平台下载图标时,支持不同格式的选择,选择svg格式,下载切图。
使用svg图标
1.新建svg文件夹,例如:src/assets/icons/svg,将svg图标放到该目录下。
2.下载插件
npm install vite-plugin-svg-icons -D
3.在vite.config.ts中新增如下配置
import {createSvgIconsPlugin} from 'vite-plugin-svg-icons'export default ({ mode, command }: { mode: any, command:any }) => {  return defineConfig({    plugins: [vue(),       vueJsx(),      //引入SVG图标素材文件      createSvgIconsPlugin({        iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/svg')],        symbolId: 'icon-[dir]-[name]',        svgoOptions: {          plugins: [            {              name: 'removeAttrs',              params: { attrs: ['fill'] }            }          ]        },      }),    ],  })}
4.在main.ts中新增
import 'virtual:svg-icons-register'
5.新建组件SvgIcon.vue。
<template>  <svg :class="svgClass" aria-hidden="true">    <use :xlink:href="iconName"></use>  </svg></template>
<script lang="ts" setup>import { computed } from 'vue'const props = defineProps({  iconClass: {    type: String,    required: true  },  className: {    type: String  }})const iconName = computed(() => {  return `#icon-${props.iconClass}`})const svgClass = computed(() => {  if (props.className) {    return 'svg-icon ' + props.className  } else {    return 'svg-icon'  }})</script>
<style lang="scss">.svg-icon {  width: 1em;  height: 1em;  vertical-align: -0.15em;  fill: currentColor;  overflow: hidden;}</style>
6.在项目中引入,iconClass传入的名称为svg文件夹中svg的图标名称。
<svg-icon iconClass="test_svg" className="icon" />
补充
在使用svg图标的时候,如果想改变图标线条的粗细,可以修改.svg文件的stroke-width属性,该属性可以设置成小数或者整数。
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。