vue中使用svg並設置大小


1、安裝依賴

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

 

2、 新建svg資源文件夾     src/assets/svg

      將svg資源放入此目錄,接下來會在配置文件中該路徑

 

 

3、vue-cli 腳手架項目3.x 以上配置  vue.config.js

 1 const path = require('path')
 2 module.exports = {
 3   chainWebpack: config => {
 4     // svg rule loader
 5     const svgRule = config.module.rule('svg') // 找到svg-loader
 6     svgRule.uses.clear() // 清除已有的loader, 如果不這樣做會添加在此loader之后
 7     svgRule.exclude.add(/node_modules/) // 正則匹配排除node_modules目錄
 8     svgRule // 添加svg新的loader處理
 9       .test(/\.svg$/)
10       .use('svg-sprite-loader')
11       .loader('svg-sprite-loader')
12       .options({
13         symbolId: 'icon-[name]',
14       })
15     // 修改images loader 添加svg處理
16     const imagesRule = config.module.rule('images')
17     imagesRule.exclude.add(path.resolve(__dirname, 'src/assets/svg'))      //注意這個路徑,為svg資源文件的路徑 18     config.module
19       .rule('images')
20       .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
21   }
22 }

 

4、創建組件  SvgIcon.vue  ( src/compoments/SvgIcon.vue

 1 <template>
 2   <svg :class="svgClass" aria-hidden="true">
 3     <use :xlink:href="iconName"></use>
 4   </svg>
 5 </template>
 6 
 7 <script>
 8 export default {
 9   name: 'svg-icon',
10   props: {
11     iconClass: {
12       type: String,
13       required: true
14     },
15     className: {
16       type: String
17     }
18   },
19   computed: {
20     iconName () {
21       return `#icon-${this.iconClass}`
22     },
23     svgClass () {
24       if (this.className) {
25         return 'svg-icon ' + this.className
26       } else {
27         return 'svg-icon'
28       }
29     }
30   }
31 }
32 </script>
33 
34 <style scoped>
39 </style>

 

5、組件注冊(全局)  (src/utils/iconsSvg.js)

 1 import Vue from 'vue'
 2 import SvgIcon from '@/components/SvgIcon'   //引入第四步的組件
 3 
 4 // 全局注冊組件
 5 Vue.component('svg-icon', SvgIcon)
 6 // 定義一個加載目錄的函數
 7 const requireAll = requireContext => requireContext.keys().map(requireContext)
 8 const req = require.context('@/assets/svg', false, /\.svg$/)                          //為svg資源文件的路徑
 9 // 加載目錄下的所有 svg 文件 10 requireAll(req)

 

6、引入組件  main.js

import './utils/iconsSvg'

 

7、使用svg組件
iconClass: svg文件的文件名
className: svg圖標的樣式類名

 1 <template>
 2   <div>
 3     <p>小明同學的大頭貼</p>
 4     <svg-icon iconClass="boy" className="boy"></svg-icon>
 5   </div>
 6 </template>
 7 
 8 <style scoped>
 9 .boy {
10   width: 200px;
11   height: 200px;
12 }
13 </style>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM