【JavaScript源代码】Vue中引入svg图标的两种方式.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
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: { 在Vue.js应用中,引入SVG图标是常见的需求,因为SVG图标具有良好的可伸缩性和响应性。本篇文章将详细介绍在Vue中引入SVG图标的两种主要方法。 ### 方法一:使用`svg-sprite-loader` 我们需要通过npm或yarn安装`svg-sprite-loader`这个依赖。在终端中运行以下命令: ```bash yarn add svg-sprite-loader --dev ``` 或者 ```bash npm install svg-sprite-loader --save-dev ``` 然后,创建一个SVG组件,例如`index.vue`: ```html <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> ``` 接下来,我们需要注册SVG组件到全局,以便在任何Vue组件中都能使用。在`index.js`中添加以下代码: ```javascript import Vue from 'vue' import SvgIcon from '@/components/SvgIcon' // 注册到全局 Vue.component('svg-icon', SvgIcon) // 读取SVG图标并自动导入 const requireAll = requireContext => requireContext.keys().map(requireContext) const req = require.context('./svg', false, /\.svg$/) requireAll(req) ``` 在`vue.config.js`中配置Webpack,以便处理SVG图标: ```javascript 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() } } ``` 这里的`resolve`函数是用于获取相对路径的,需要在文件顶部定义: ```javascript const path = require('path'); function resolve(dir) { return path.join(__dirname, dir); } ``` 在需要使用SVG图标的Vue组件中,你可以这样引用: ```html <svg-icon svg-name="ic_home_news" /> ``` ### 方法二:使用`vue-svg-component-runtime` 另一种引入SVG图标的方法是使用`vue-svg-component-runtime`库。安装该库: ```bash npm install vue-svg-component-runtime --save ``` 然后,创建一个SVG组件模板,如`SvgIcon.vue`: ```html <template> <svg-component :name="iconName" :class="svgClass"></svg-component> </template> <script> import VueSvgComponentRuntime from 'vue-svg-component-runtime' export default { name: 'SvgIcon', props: { svgName: { type: String, required: true } }, components: { SvgComponent: VueSvgComponentRuntime }, computed: { svgClass () { if (this.svgName) { return 'svg-icon' + this.svgName } else { return 'svg-icon' } } } } </script> <style scoped> /* 这里可以添加通用的SVG样式 */ </style> ``` 接下来,将SVG图标文件夹中的每个SVG文件转换为Vue组件,可以使用`@vue/cli-service`提供的`vue-cli-service`命令: ```bash vue-cli-service build --target lib --name icons src/icons/*.svg ``` 这将在`dist`目录下生成一系列的SVG组件,然后在`main.js`或`index.js`中导入这些组件: ```javascript import * as icons from '@/icons' Object.keys(icons).forEach(name => { Vue.component(name, icons[name]) }) ``` 现在,你可以在Vue组件中使用这些SVG组件: ```html <SvgIcon svg-name="ic_home_news" /> ``` 这两种方法都可以有效地在Vue项目中引入SVG图标,并且可以根据项目需求和个人偏好选择合适的方法。使用SVG图标不仅可以提升网站的视觉效果,还能确保在不同屏幕尺寸和分辨率下的图标质量。


剩余8页未读,继续阅读





















- 粉丝: 1w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 鼎信诺审计软件常见问题------(1).pdf
- C语言第三章习题带答案(1).pdf
- 阀盖工艺及夹具的设计含全套说明书和CAD图纸样本(1).doc
- 第13章常用办公自动化设备实用技术(1).pptx
- 计算机基础试卷(大学)(1).doc
- 基于FX3U PLC与RTU通信技术的多品牌变频器独立控制系统设计与实现
- C语言课程实训设计报告(农民工资系统)(1).docx
- 鸿业土方计算设计软件(1).pdf
- 单片机课程设计超声波测距仪的设计说明 (1)(1).doc
- 计算机四级信息安全工程师模拟试题(20220103035918)------(1).pdf
- 信息、网络及办公自动化管理制度(1).doc
- C语言期末考试全部知识点复习资料重点常考点(1).docx
- C语言12章课后题(1).doc
- Excel快捷命令大全(1).pdf
- 完整版网上商城项目数据库表(1).doc
- 软件配置管理计划模版 (1)(1).doc



评论0