通过vite-plugin-svg-icons 使用SVG图片

文章介绍了如何在Vue项目中使用vite-plugin-svg-icons来管理和使用SVG图标。首先通过npm或yarn安装插件,然后在main.js中引入并配置。接着在vite.config.js中指定SVG文件夹并配置symbolId。之后创建一个SVG封装组件用于按需引入或全局注册。最后展示了组件的使用方法,既可局部引入也可全局注册。
摘要由CSDN通过智能技术生成

一、安装 vite-plugin-svg-icons


   
   
  1. npm i vite-plugin-svg-icons -D
  2. // 或者
  3. yarn add vite-plugin-svg-icons -D

二、在main.js引入

import 'virtual:svg-icons-register'
   
   

三、配置SVG图片文件夹

如:

四、在vite.config.js中配置


   
   
  1. //import path,{ resolve } from 'path'
  2. import path from 'path'
  3. import {createSvgIconsPlugin} from 'vite-plugin-svg-icons'
  4. export default defineConfig( (command) => {
  5. return {
  6. plugins: [
  7. createSvgIconsPlugin({
  8. // 指定要缓存的文件夹
  9. iconDirs: [path. resolve(process. cwd(), 'src/assets/icons')],
  10. // 指定symbolId格式
  11. symbolId: '[name]'
  12. })
  13. ],
  14. }
  15. })

五、新建svg封装组件,路径参考:src\components\svg-icon\index.vue


   
   
  1. <template>
  2. <svg :class="svgClass" aria-hidden="true">
  3. <use class="svg-use" :href="symbolId" />
  4. </svg>
  5. </template>
  6. <script>
  7. import { defineComponent, computed } from 'vue'
  8. export default defineComponent({
  9. name: 'SvgIcon',
  10. props: {
  11. prefix: {
  12. type: String,
  13. default: 'icon'
  14. },
  15. name: {
  16. type: String,
  17. required: true
  18. },
  19. className: {
  20. type: String,
  21. default: ''
  22. }
  23. },
  24. setup( props) {
  25. const symbolId = computed( () => `#${props.name}`)
  26. const svgClass = computed( () => {
  27. if (props. className) {
  28. return `svg-icon ${props.className}`
  29. }
  30. return 'svg-icon'
  31. })
  32. return { symbolId, svgClass }
  33. }
  34. })
  35. </script>
  36. <style scope>
  37. .svg-icon {
  38. vertical-align: - 0.1em; /* 因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 */
  39. fill: currentColor; /* 定义元素的颜色,currentColor是一个变量,这个变量的值就表示当前元素的color值,如果当前元素未设置color值,则从父元素继承 */
  40. overflow: hidden;
  41. }
  42. </style>

六、按需引入使用


   
   
  1. <template>
  2. <SvgIcon name="issue"> </SvgIcon>
  3. </template>
  4. <script setup>
  5. import SvgIcon from "@/components/SvgIcon.vue";
  6. </script>

七、全局引入使用

在main.js中加入


   
   
  1. import svgIcon from './components/svgIcon/index.vue'
  2. createApp( App). component( 'svg-icon', svgIcon)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值