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>
复制代码

 

posted @   顺·  阅读(3275)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示