vue3.0+ts+vite+svg


使用vite搭建的vue3.0 ts項目中使用svg圖標方法:
1,安裝 vite-plugin-svg-icons

npm i vite-plugin-svg-icons -D

2,vite.config.ts 中的配置插件

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import viteSvgIcons from 'vite-plugin-svg-icons';
import path from 'path'; 
export default defineConfig({
  plugins: [
      vue(),
   
    /**
     *  把src/icons 下的所有svg 自動加載到body下,供組件使用
     */
     viteSvgIcons({
        // 指定需要緩存的圖標文件夾,地址可改
        iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]',
      }),
    ]
})

3,在 src/main.ts 內引入注冊腳本

import 'virtual:svg-icons-register';

4,封裝svg-icon組件:/src/components/SvgIcon.vue

<template>
  <svg aria-hidden="true">
    <use :xlink:href="symbolId" :fill="color" />
  </svg>
</template>

<script>
  import { defineComponent, computed } from 'vue';

  export default defineComponent({
    name: 'SvgIcon',
    props: {
      prefix: {
        type: String,
        default: 'icon',
      },
      name: {
        type: String,
        required: true,
      },
      color: {
        type: String,
        default: '#333',
      },
    },
    setup(props) {
      const symbolId = computed(() => `#${props.prefix}-${props.name}`);
      return { symbolId };
    },
  });
</script>

5,使用 ,如app組件中:/src/App.vue

<template>
  <div>
    <SvgIcon name="icon1"></SvgIcon>
    <SvgIcon name="icon2"></SvgIcon>
    <SvgIcon name="icon3"></SvgIcon>
    <SvgIcon name="dir-icon1"></SvgIcon>
  </div>
</template>

<script>
  import { defineComponent, computed } from 'vue';

  import SvgIcon from './components/SvgIcon.vue';
  export default defineComponent({
    name: 'App',
    components: { SvgIcon },
  });
</script>

注:icon1,icon2 等是放在src/assets/svg文件夾下的icon1.svg ,icon2.svg 文件。

問題:想實現一張大的svg圖全屏的效果,尺寸卻是很小,無論怎么控制width,也全屏不了

 

 待后續解決之后補充。

 

 

原文鏈接:https://github.com/anncwb/vite-plugin-svg-icons/blob/main/README.zh_CN.md

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM