vue3+vite使用svg图片

一、下载插件

yarn add vite-plugin-svg-icons -D

// or

npm i vite-plugin-svg-icons -D

二、配置

1、vite.config.ts

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
 
export default defineConfig({
    plugins: [
        vue(),
        createSvgIconsPlugin({
            // 指定需要缓存的图标文件夹
            iconDirs: [path.resolve(process.cwd(), 'src/assets/icon/svg')],
            // 指定symbolId格式
            symbolId: '[name]',
        }),
    ]
})

2、在src/assets目录中添加icon/svg目录,svg格式的图片放在src/assets/icon/svg/下

3、src/components目录下创建icon/icon-component.vue文件,代码:

<template>
    <!-- aria-hidden:默认为false,设置为true表示会把整个元素包括子元素从可访问树(AOM)上移除,但是在DOM树上还是存在的 -->
    <!-- fill:如果在动画接收还需要保持动画的值,可用于设置颜色 -->
    <svg :class="'svg-icon ' + ($attrs.iconClass ? $attrs.iconClass : '')" aria-hidden="true">
        <use class="svg-use" :href="'#' + $attrs.iconName" />
    </svg>
</template>
 
<script setup>
import { defineComponent, computed } from 'vue'
// 可以打印所有注册的svg图标
// import ids from 'virtual:svg-icons-names'
 
</script>
<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  fill: currentColor;
  vertical-align: middle;
}
</style>

4、main.ts

import SvgIcon from './components/icon/icon-component.vue'
import 'virtual:svg-icons-register'


const app = createApp(App);

app.component('svg-icon', SvgIcon)
app.mount('#app')

三、使用svg图片

<svg-icon iconName="svg图片的名字"></svg-icon>

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值