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