vue中使用svg图标

安装依赖

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

配置信息

配置build文件夹中的webpack.base.conf.js,主要在两个地方添加代码。

exclude: [resolve('src/icons')],
{
    test: /\.svg$/,
    loader: 'svg-sprite-loader',
    include: [resolve('src/icons')],
    options: {
          symbolId: 'icon-[name]'
    }
 },
微信截图_20200401083042.png

创建文件

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

微信截图_20200401083443.png

代码

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName"></use>
  </svg>
</template>

<script>
export default {
  name: 'svg-icon',
  props: {
    iconClass: {
      type: String,
      required: true
    },
    className: {
      type: String
    }
  },
  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: 1.2em;
  height: 1.2em;
  vertical-align: -0.18em;
  fill: currentColor;
  overflow: hidden;
}
</style>

2.在src下新建icons文件夹,及icons文件夹下svg文件夹、index.js文件

微信截图_20200401083646.png

svg 文件夹用来存放图标

index.js 文件代码

import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg组件

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

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

3.在main.js中引入svg

import '@/icons' // icon

使用

  1. 可以去阿里巴巴矢量图标库下载svg格式图标
  2. 将svg格式图标存放在 src/icons/svg 文件架下
  3. 在页面中使用
<svg-icon icon-class="svg-name"></svg-icon>

svg-name 为你所下载svg格式图标的名称,如你的图片名为 text.svg,只需将svg-name改为 text 即可

原文链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。