VUE使用svg字體圖標

vue使用字體圖標svg,在src下新建目錄icons文件,再在icons文件下新建svg文件,在阿里ico中將字體的svg圖片下載下來便可:例如from.svgvue

在組件中新建icon-svg.vue組件webpack

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

<script>
  export default {
    name: 'icon-svg',
    props: {
      iconClass: {
        type: String,
        required: true
      }
    },
    computed: {
      iconName() {
        return `#icon-${this.iconClass}`
      }
    }
  }
</script>

<style scoped lang="stylus">
  .svg-icon {
    width 1.1em
    height 1.1em
    vertical-align -.2em
    fill currentColor
    overflow hidden
  }
</style>

在iicon的js中使用該組件icon-svg.vue組件web

import Vue from 'vue'
import IconSvg from '@/components/icon-svg'
/*
require.context("./test", false, /.test.js$/);這行代碼就會去 test 文件夾(不包含子目錄)
下面的找全部文件名以 .test.js 結尾的文件能被 require 的文件。更直白的說就是 咱們能夠經過正則匹配引入相應的文件模塊。
require.context有三個參數:
directory:說明須要檢索的目錄
useSubdirectories:是否檢索子目錄
regExp: 匹配文件的正則表達式
 */
//全局註冊iconsvg組件
Vue.component('svg-icon', IconSvg)

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

main.js引入全局圖標(後面的index.js能夠省略)正則表達式

// 全局圖標
import './icons/index.js'

全局組件使用方式npm

 <svg-icon  icon-class="form"></svg-icon>

SVG安裝svg

npm i svg-sprite-loader --save

配置相關信息  在build/webpack.base.conf.js文件中,加入學習

{
        test: /\.svg$/,
        loader: 'svg-sprite-loader',
        include: [resolve('src/icons')],
        options: {
          symbolId: 'icon-[name]'
        }
},

exclude: [resolve('src/icons')],

  

相關學習連接:https://www.jianshu.com/p/5b2c7757fc19字體

相關文章
相關標籤/搜索