最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中引入svg圖標的兩種方式

 更新時間:2021年01月14日 10:16:07   作者:十里不故夢  
這篇文章主要給大家介紹了關于Vue中引入svg圖標的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Vue中引入svg圖標的方式

Vue中引入svg圖標的方式一

安裝

yarn add svg-sprite-loader --dev

svg組件

index.vue

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

<script>
export default {
 name: 'SvgIcon',
 props: {
  // svg 的名稱
  svgName: {
   type: String,
   required: true
  }
 },
 computed: {
  iconName () {
   return `#icon-${this.svgName}`
  },
  svgClass () {
   if (this.svgName) {
    return 'svg-icon' + this.svgName
   } else {
    return 'svg-icon'
   }
  }
 }
}
</script>

<style lang="less" scoped>
.svg-icon {
 width: 100px;
 height: 100px;
 vertical-align: -0.15em;
 fill: currentColor;
 overflow: hidden;
}
</style>

注冊到全局

index.js

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

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

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

vue.config.js

module.exports = {
	chainWebpack: config => {
	 	config.module
   .rule('svg')
   .exclude.add(resolve('src/assets/icons'))
   .end()
  config.module
   .rule('icons')
   .test(/\.svg$/)
   .include.add(resolve('src/assets/icons'))
   .end()
   .use('svg-sprite-loader')
   .loader('svg-sprite-loader')
   .options({
    symbolId: 'icon-[name]'
   })
   .end()
	}  
}

頁面中使用

<!-- svg-name為svg名 -->
<svg-icon svg-name="ic_home_news" />

Vue中引入svg圖標的方式二

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

vue.config.js中添加如下代碼

const path = require('path');
function resolve(dir) {
 // __dirname項目根目錄的絕對路徑
 return path.join(__dirname, dir);
}
module.exports = {
 chainWebpack: config => {
 const svgRule = config.module.rule('svg');
 // 清除已有的所有l(wèi)oader
 // 如果你不這樣做,接下來的loader會附加在該規(guī)則現(xiàn)有的loader之后
 svgRule.uses.clear();
 svgRule
  .test(/\.svg$/)
  .include.add(path.resolve(__dirname, './src/icons/svg'))
  .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/svg'))
  .end()
  .use('file-loader')
  .loader('file-loader');
 },
}

建立如下的文件目錄

SvgIcon.vue代碼

<template>
 <svg :class="svgClass" xmlns="http://www.w3.org/2000/svg">
 <use :xlink:href="iconName" xmlns:xlink="http://www.w3.org/1999/xlink" />
 </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>

svg文件夾下放svg圖標

index.js代碼

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

最后在main.js中引入

import './icons'; 

在頁面中使用svg

icon-class是svg圖標名 class-name是你要自定義的class類名

<svg-icon icon-class="features_ic_risk@1x" class-name="icon"></svg-icon>

總結

到此這篇關于Vue中引入svg圖標的兩種方式的文章就介紹到這了,更多相關Vue引入svg圖標內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue.js打包之后可能會遇到的坑!

    vue.js打包之后可能會遇到的坑!

    這篇文章主要給大家介紹了關于vue.js打包之后可能會遇到的一些坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • 解決VantUI popup 彈窗不彈出或無蒙層的問題

    解決VantUI popup 彈窗不彈出或無蒙層的問題

    這篇文章主要介紹了解決VantUI popup 彈窗不彈出或無蒙層的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 使用vue初用antd 用v-model來雙向綁定Form表單問題

    使用vue初用antd 用v-model來雙向綁定Form表單問題

    這篇文章主要介紹了使用vue初用antd 用v-model來雙向綁定Form表單問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vuex 實現(xiàn)getter值賦值給vue組件里的data示例

    vuex 實現(xiàn)getter值賦值給vue組件里的data示例

    今天小編就為大家分享一篇vuex 實現(xiàn)getter值賦值給vue組件里的data示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue利用自定義指令實現(xiàn)按鈕權限控制

    Vue利用自定義指令實現(xiàn)按鈕權限控制

    這篇文章主要為大家詳細介紹了Vue如何利用自定義指令實現(xiàn)按鈕權限控制效果,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以參考下
    2023-05-05
  • Vue的事件響應式進度條組件實例詳解

    Vue的事件響應式進度條組件實例詳解

    這篇文章主要介紹了Vue的事件響應式進度條組件的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • vue如何使用formData傳遞文件類型的數據

    vue如何使用formData傳遞文件類型的數據

    這篇文章主要介紹了vue如何使用formData傳遞文件類型的數據問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 誤引用vuex-persistedstate導致用戶信息無法清除問題及解決

    誤引用vuex-persistedstate導致用戶信息無法清除問題及解決

    這篇文章主要介紹了誤引用vuex-persistedstate導致用戶信息無法清除問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue如何監(jiān)聽頁面緩存事件

    vue如何監(jiān)聽頁面緩存事件

    這篇文章主要介紹了vue如何監(jiān)聽頁面緩存事件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • VUE 實現(xiàn)一個簡易老虎機的項目實踐

    VUE 實現(xiàn)一個簡易老虎機的項目實踐

    老虎機在很多地方都可以見到,可以設置中獎位置,以及中獎回調,本文主要介紹了VUE 實現(xiàn)一個簡易老虎機的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04

最新評論

高安市| 榆中县| 崇信县| 德庆县| 苍梧县| 德令哈市| 陇川县| 集贤县| 衡阳市| 沂水县| 子洲县| 嘉义市| 赤水市| 抚顺市| 怀柔区| 大田县| 珲春市| 乌什县| 莎车县| 吉林市| 河源市| 威远县| 兴隆县| 抚顺县| 阿拉善左旗| 湘潭市| 镇平县| 东乌珠穆沁旗| 桃园市| 富顺县| 奉新县| 芒康县| 金堂县| 达日县| 兴山县| 泰来县| 毕节市| 辽宁省| 商水县| 从江县| 阿尔山市|