zoukankan      html  css  js  c++  java
  • 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

     
  • 相关阅读:
    vue项目index.html , main.js的关系
    vue项目是如何加载入口文件main.js的
    解决Mysql密码修改后不能登录的问题
    解决IDEA右侧maven不显示方法
    (转)sql语句定义和执行顺序
    关于我
    css中好用的clamp()函数
    vue中子组件使用$emit传值的种种情况
    我的大学 -詹书庭
    自定义组件使用v-model
  • 原文地址:https://www.cnblogs.com/nanamiao/p/15308432.html
Copyright © 2011-2022 走看看