背景
下载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属性,该属性可以设置成小数或者整数。
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。