vue使用svg來做為icon

vue如何使用svg來做為系統(tǒng)圖標(biāo)

1.在 src/components/ 下創(chuàng)建 SvgIcon 組件

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

2.修改默認(rèn)的svg-loader

'use strict'
const path = require('path')

function resolve (dir) {
  return path.join(__dirname, './', dir)
}
module.exports = {
  chainWebpack: config => {
    config.plugin('define').tap(args => {
      const argv = process.argv
      const icourt = argv[argv.indexOf('--icourt-mode') + 1]
      args[0]['process.env'].MODE = `"${icourt}"`
      return args
    })
    // svg rule loader
    const svgRule = config.module.rule('svg') // 找到svg-loader
    svgRule.uses.clear() // 清除已有的loader, 如果不這樣做會(huì)添加在此loader之后
    svgRule.exclude.add(/node_modules/) // 正則匹配排除node_modules目錄
    svgRule // 添加svg新的loader處理
      .test(/\.svg$/)
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      // 修改images loader 添加svg處理
    const imagesRule = config.module.rule('images')
    imagesRule.exclude.add(resolve('src/assets/icons'))
    config.module
      .rule('images')
      .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
  },

3.安裝 svg-sprite-loader

npm install svg-sprite-loader --save

4.在assets目錄先創(chuàng)建svg文件夾把svg導(dǎo)入
創(chuàng)建index.js

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

// 全局注冊(cè)
Vue.component('svg-icon', SvgIcon)

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荐类,一起剝皮案震驚了整個(gè)濱河市衡怀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)脏嚷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞒御,“玉大人父叙,你說我怎么就攤上這事】梗” “怎么了高每?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)践宴。 經(jīng)常有香客問我鲸匿,道長(zhǎng),這世上最難降的妖魔是什么阻肩? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任带欢,我火速辦了婚禮运授,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乔煞。我一直安慰自己吁朦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布渡贾。 她就那樣靜靜地躺著逗宜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪空骚。 梳的紋絲不亂的頭發(fā)上纺讲,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音囤屹,去河邊找鬼熬甚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肋坚,可吹牛的內(nèi)容都是我干的乡括。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼智厌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼诲泌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铣鹏,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤档礁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吝沫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡递礼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年惨险,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了始花。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稿湿。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖族铆,靈堂內(nèi)的尸體忽然破棺而出将硝,到底是詐尸還是另有隱情恭朗,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布依疼,位于F島的核電站痰腮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏律罢。R本人自食惡果不足惜膀值,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一棍丐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沧踏,春花似錦歌逢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至潦匈,卻和暖如春阱高,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背历等。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工讨惩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寒屯。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓荐捻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親寡夹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子处面,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • ?? 之前大部分 icon 是png圖片,當(dāng)有兩種狀態(tài)時(shí)就需要兩種圖片的替換菩掏,占用的體積也是比較大的魂角,后來接觸到了...
    前端新陽(yáng)閱讀 9,470評(píng)論 2 14
  • 前言 本篇文章其實(shí)陸陸續(xù)續(xù)寫了快半年野揪,主體部分寫好了很久了,但由于種種原因一直沒有發(fā)布瞧栗。首先來說說寫這篇文章的主要...
    7cd975786ccd閱讀 4,476評(píng)論 0 11
  • 終于給搞定了斯稳!下面來個(gè)總結(jié)吧: 1、先在package.json中引入迹恐,再執(zhí)行安裝挣惰,應(yīng)注意是項(xiàng)目使用 vue in...
    Zola_4f36閱讀 3,160評(píng)論 1 1
  • 目錄 iconfont的三種使用方式及其優(yōu)缺點(diǎn) 封裝svg組件 svg雪碧圖 自動(dòng)導(dǎo)入svg圖標(biāo) 封裝svg組件 ...
    胡儒清閱讀 15,339評(píng)論 0 8
  • 詩(shī)是什么? 我不知道 可能是被摧毀的凋零的心 我不會(huì)寫詩(shī) 卻被不經(jīng)意間的你俘獲 洋洋灑灑幾字 就夠了 我還記得你的...
    倪拗拗閱讀 446評(píng)論 8 6