Vue3.0及以上版本的项目添加svg图片及使用阿里矢量图片库

一.安装插件

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

二:配置,在Vue.config.js加入处理 svg 的 loader

//3.0版本
  chainWebpack: config => {
    const svgRule = config.module.rule('svg')
    // 清除已有的所有 loader。
    // 如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后。
    svgRule.uses.clear()
    svgRule
        .test(/\.svg$/)
        .include.add(path.resolve(__dirname, './src/icons'))
        .end()
        .use('svg-sprite-loader')
        .loader('svg-sprite-loader')
        .options({
          symbolId: 'icon-[name]'
        })
    const fileRule = config.module.rule('file')
    fileRule.uses.clear()
    fileRule
        .test(/\.svg$/)
        .exclude.add(path.resolve(__dirname, './src/icons'))
        .end()
        .use('file-loader')
        .loader('file-loader')
  }

三,根目录创建icons文件夹,来放所有的svg文件,也可直接去github官网下载icons文件地址 直接复制

在这里插入图片描述
在这里插入图片描述

index.js代码

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)

在src/components下新建文件夹及文件SvgIcon/index.vue

在这里插入图片描述

index.vue代码: .svg-icon:可自定义设置大小

<template>
<svg :class="svgClass" aria-hidden="true" v-on="$listeners">
  <use :xlink: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'
        }
      }
    }
  }
</script>

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

四,在main.js中引入并注册

在这里插入图片描述

五,使用

在这里插入图片描述
在这里插入图片描述

<svg-icon icon-class="svg的文件名" class-name="card-panel-icon" />

去阿里矢量库下载你需要的图标,添加到icons的svg目录下,可自定义文件名及使用 ,地址: 阿里巴巴矢量图标库

在这里插入图片描述

更多学习关注公众号:程序猿的进化

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44758515/article/details/106884058