vuecli3.0使用svg圖標(biāo)

在vue.config.js中加入配置項(xiàng)

  chainWebpack: (config) => {
    const svgRule = config.module.rule("svg");
    svgRule.uses.clear();
    svgRule
      .use("svg-sprite-loader")//npm install svg-sprite-loader 下載svg-sprite-loader包
      .loader("svg-sprite-loader")
      .options({
        symbolId: "icon-[name]",
        include: ["./src/icons"]//svg文件位置
      });
  }

在src下添加一下內(nèi)容


image.png

index.js內(nèi)容為

import Vue from 'vue'
import SvgIcon from '@/components/svg'// svg組件
// register globally
Vue.component('svg-icon', SvgIcon)
const requireAll = requireContext => requireContext.keys().map(requireContext)
const req = require.context('./svg', false, /\.svg$/)
requireAll(req)

在compoents文件夾下添加svg.vue文件

<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>

在main.js引用index.js

import  './src/icons '
使用

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • svg 是一個真正的矢量 不管你再怎么的放縮它都不會失真模糊,而且svg可以控制的屬性也更加的豐富,也能做出更加生...
    一一小知閱讀 4,361評論 0 11
  • webpack-4.x 安裝 npm i webpack -g: 全局安裝webapck 基本使用 不使用配置文件...
    duans_閱讀 1,849評論 0 12
  • 第一章 Vue概述 what? Vue是實(shí)現(xiàn)UI層的漸進(jìn)式j(luò)s框架,核心庫關(guān)注視圖層,簡單的ui構(gòu)建,復(fù)雜的路由控...
    fastwe閱讀 833評論 0 0
  • Vue 實(shí)例 屬性和方法 每個 Vue 實(shí)例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,365評論 0 6
  • 游高田塍 (新韻) 林間鷺鳥悠閑逛, 田畈玫瑰五彩籬。 非遺院中學(xué)技術(shù), 搗騰陶器一身泥。
    金賽月閱讀 372評論 2 11

友情鏈接更多精彩內(nèi)容