• 如何在vue中使用svg


    1. 第一步要安装依赖

    npm install svg-sprite-loader --save-dev

    2. 在配置文件中需要设置config.js, vue3.0中

    const path = require('path')
    const defaultSettings = require('./src/settings.js')

    function resolve(dir) {
      return path.join(__dirname, dir)
    }
     
    chainWebpack(config) {
     
        // set svg-sprite-loader
        config.module
          .rule('svg')
          .exclude.add(resolve('src/icons'))
          .end()
        config.module
          .rule('icons')
          .test(/.svg$/)
          .include.add(resolve('src/icons'))
          .end()
          .use('svg-sprite-loader')
          .loader('svg-sprite-loader')
          .options({
            symbolId: 'icon-[name]'
          })
          .end()
    }

    3. 需要在components文件夹下新建一个SvgIcon/index.vue

    代码如下:
    <template>
      <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
        <use :href="iconName" />
      </svg>
    </template>

    <script>
     
    export default {
      name: 'SvgIcon',
      props: {
        iconClass: {
          type: String,
          required: true
        },
        className: {
          type: String,
          default: ''
        }
      },
      computed: {
        iconName() {
          return `#icon-${this.iconClass}`
        },
        svgClass() {
          if (this.className) {
            return 'svg-icon ' + this.className
          } else {
            return 'svg-icon'
          }
        },
        styleExternalIcon() {
          return {
            mask: `url(${this.iconClass}) no-repeat 50% 50%`,
            '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
          }
        }
      }
    }
    </script>

    <style scoped>
    .svg-icon {
       1em;
      height: 1em;
      vertical-align: -0.15em;
      fill: currentColor;
      overflow: hidden;
    }

    .svg-external-icon {
      background-color: currentColor;
      mask-size: cover!important;
      display: inline-block;
    }
    </style>

    4. 新建icons文件夹,在里面新建一个svg文件夹用来存放.svg文件,新建一个index.js文件

    把上一步创建好的SvgIcon文件引用过来

    import Vue from 'vue'
    import SvgIcon from '@/components/SvgIcon'// svg component

    // register globally
    Vue.component('svg-icon', SvgIcon)

    const req = require.context('./svg', false, /.svg$/)
    const requireAll = requireContext => requireContext.keys().map(requireContext)
    requireAll(req)

    5. main.js中要引入

     引入  import '@/icons'

    6. 就可以在文件中引入使用了

    
    
    使用标签 <svg-icon icon-class="你的svg名称" />  就可以使用啦
     
  • 相关阅读:
    LVS与Nginx区别
    Vue报错:Vue TypeError:Cannot read property ‘xxx‘ of null
    可以这样去理解group by和聚合函数
    52条SQL语句性能优化策略
    阿里云ECS搭建Typecho博客
    Java01——入门
    一天学习一个设计模式之外观模式
    一天学习一个设计模式之组合模式
    一天学习一个设计模式之桥接模式
    一天学习一个设计模式之适配器模式
  • 原文地址:https://www.cnblogs.com/vickyzhang/p/13299760.html
Copyright © 2020-2023  润新知