Vue项目中使用svg
引入依赖
yarn add svg-sprite-loader -D

[可选] yarn add svgo svgo-loader -D

依赖说明:
svg-sprite-loader
sprites 会被自动渲染和注入页面,您只需通过<svg><use xlink:href="#id"></use></svg>
工作原理是: 利用svg的symbol元素,将每个icon包括在symbol中,通过use元素使用该symbol.

svgo svgo-loader用于精简 svg 代码

1.在src/icons/svg存放icon矢量图(以.svg结尾)

2.svg 目录主要用于存放 svg 文件,来看一下 index.js 的内容,功能就是把组件注册到全局,方便使用:

在src/icons/index.js中使用webpack的require.context自动引入src/icons下面所有的图标。

import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg组件// register globally
Vue.component('svg-icon', SvgIcon)const requireAll = requireContext => requireContext.keys().map(requireContext);
/*** require.context(directory,useSubdirectories,regExp)* require.context():需要一次性的引入某个文件夹下的所有文件
形参:
directory:需要引入文件的目录
useSubdirectories:是否查找该目录下的子级目录
regExp:匹配引入文件的正则表达式*/const req = require.context('./svg', false, /\.svg$/);
requireAll(req)

3、在 src/components/ 下创建 SvgIcon 组件

<template><svg :class="svgClass" aria-hidden="true"><use :xlink:href="iconName" /></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>

4、在main.js中引入

import '@/icons';//引入svg模板

5、在组件中如何使用:
这里就会使用 src/icons/svg/example.svg 文件。

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

6 最重要的一点!!!
因为此项目是Vue cli3 所以对 vue.config.js 进行配置

 chainWebpack: config => {config.plugin('define').tap(args => {const argv = process.argvconst icourt = argv[argv.indexOf('--icourt-mode') + 1]args[0]['process.env'].MODE = `"${icourt}"`return args})// svg rule loaderconst svgRule = config.module.rule('svg') // 找到svg-loadersvgRule.uses.clear() // 清除已有的loader, 如果不这样做会添加在此loader之后svgRule.exclude.add(/node_modules/) // 正则匹配排除node_modules目录svgRule // 添加svg新的loader处理.test(/\.svg$/).use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]',})// 修改images loader 添加svg处理const imagesRule = config.module.rule('images')imagesRule.exclude.add(resolve('src/icons'))config.module.rule('images').test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)},

Vue项目中操作svg文件相关推荐

  1. Vue项目中使用svg文件

    使用第三方插件vue-svg-icon npm i vue-svg-icon -D 在入口文件main.js引入 import Vue from from 'vue' import Icon from ...

  2. 学习踩坑:在Vue项目中使用svg标签却无法改变图标的颜色

    在Vue项目中使用svg标签却无法改变图标的颜色 在学习 vue 实战项目的过程中,用到了 svg 模块,对其使用了 fill 属性后,图标的颜色却没有任何的改变,反复查看了视频,步骤是一模一样的,却 ...

  3. Vue项目中使用Svg矢量图标

    #Vue项目中使用Svg矢量图标 使用npm install svg-sprite-loader –save命令或 cnpm install svg-sprite-loader –save命令进行安装 ...

  4. 在vue项目中使用svg图标

    目录 VUE项目中为什么使用svg 1.在src/components下创建文件夹,命名为SvgIcon,并再SvgIcon文件夹下,新增目录index.vue文件: 2.在src目录下,新增文件夹, ...

  5. html js使用svg图标,Vue项目中使用svg图标

    1,安装依赖 Vue项目的运行少不了安装依赖,使用svg同样. npm install svg-sprite-loader --save-dev 2,配置 项目中找到build文件夹中的webpack ...

  6. vue项目中的 env文件从何而来?什么是 process.env

    start 在 vue 项目中,时常会遇到到这么一行代码 process.env 这东西是什么,怎么用? 今天一篇文章带你了解 process.env 1.使用场景 先别急,先看 vue 项目中的用法 ...

  7. 如何在VUE项目中使用svg图标

    一文带你搞定svg图标的使用! 文章目录 前言 一.SVG相较于字体图标的优点 二.使用步骤 1.新建一个vue2项目 2.安装项目依赖 3 .在src目录下新建文件夹 4.创建svg-icon组件 ...

  8. vue项目中使用svg,通过img标签轻量解决方案,支持动态颜色更改

    前言 svg的优点不多说,怎么在vue项目优雅的使用svg?通过img似乎很优雅简单,但是你知道通过img引入svg怎么更改颜色吗?知道怎么动态切换颜色吗? 一.components下创建自定义公共s ...

  9. vue-cli构建的vue项目中引入stylus文件

    stylus是css预处理器.还有另外两种css预处理器语言详解:less.sass. 不懂的可以先看一下这篇文章:stylus预处理入门 在vue项目引入stylus css预处理器,可以让我们的c ...

最新文章

  1. cdn对加速效果明显吗
  2. C#事件(Event)的理解
  3. [APIO2014] 序列分割(斜率优化dp)
  4. JSP2.0中的表达式语言(EL表达式)
  5. u boot 驱动完成
  6. matlab中结束脚本运行_MATLAB脱单指南
  7. python调用图灵api_python调用API实现智能回复机器人
  8. Tsinsen A1517. 动态树 树链剖分,线段树,子树操作
  9. 如何对react进行性能优化
  10. python数据分析-为什么Python对大数据分析那么很重要?
  11. 计算机每个人都适合学吗,代码不等于计算机科学:为什么所有人都应该学习编程...
  12. 刷脸支付星星之火可以燎原
  13. HTML5期末大作业:基于HTML+CSS+JavaScript仿蘑菇街购物商城设计毕业论文源码
  14. 【2019/09/16】关于固态硬盘你不得不知道的那些事
  15. 分子间相互作用——偶极作用dipolar-dopolar interaction
  16. ClickHouse 极简教程
  17. ABP学习笔记:关于生成Proxy前端代理的一些注意事项
  18. 【无代码体验】使用鲸智搭开发《招聘管理系统》
  19. 【QZSS L6E 增强服务改正数支持的 PPP 性能评估】
  20. 操作系统内存管理详细总结

热门文章

  1. 常用API——Random类
  2. Lumiprobe核酸定量丨QuDye dsDNA BR 检测试剂盒
  3. 关于联合体及联合体嵌套结构体
  4. 对彩色花图像进行分类-基于R语言的Keras实现
  5. 亚马逊中国站获取全部商品分类
  6. 拉上谷歌高通 三星围攻苹果
  7. 推荐系统三十六式(刑无刀)学习笔记(一)
  8. 雅佳5000音色中英文对照表 AKAI EWI5000
  9. HTML+CSS实现网易云音乐首页的主播电台页面
  10. 从DDR到DDR4,内存核心频率其实基本上就没太大的进步