SVG的引入历程
直接引入编辑器会报错
Google: typescript svg cannot find module找到 这个网址

我放到了 shims-vue.d.ts 里面
declare module "*.svg" {
const content: any;
export default content;
}
用的时候需要用到svg use 的使用方法所以需要一个loader 所以会用到svg sprite loader
google搜索svg sprite loader 这个网址
- 打开控制台:安装
yarn add svg-sprite-loader -D - 做些配置:你得把搜索到的webpack.config.js的内容改成vue.config.js认识的内容。
vue.config.js
const path = import('path')
module.exports = {
lintOnSave: false,
chainWebpack: config => {
const dir = path.resolve(__dirname, 'src/assets/icons') //我们的icons全处于这个目录
//config就是vue把webpack的API封装了,然后暴露给我们的一个对象
config.module
.rule('svg-sprite') //添加一个规则
.test(/\.svg$/ //文件如果匹配上了这个正则表达式(整个目录下的.svg结尾的文件)就用这个规则
.include.add(dir).end() // 只包含 icons 目录就结束,其他目录一概不走这个规则(也就是icons目录的.svg文件)
.use('svg-sprite-loader').loader('svg-sprite-loader').options({extract: false}).end(), //使用哪些loader
//有个坑!打开一个svg文件,其实是个xml文件,用soft wrap自动换行看得更清楚。在<path>标签里添加fill=某种color,那这个icon svg 就会变色!相当于这个svg默认就带颜色了,会覆盖我们自己给他的颜色!那我们不想要我们的svg自带颜色(因为我们改不了),我们也不可能一个个svg都去删掉他们的fill,万一有一百个svg呢!
.use('svgo-loader').loader('svgo-loader') //可以使用一个svgo-loader,记得安装(yarn add --dev svgo-loader)!
.tap(options => ({...options, plugins: [{removeAttrs: {attrs: 'fill'}}]})).end() //添加了一个选项,删除fill属性
//配置插件
config.plugin('svg-sprite').use(import('svg-sprite-loader/plugin'), [{plainSprite: true}]),
//其他的svg loader要排除我们现在这个目录,不然dir又走了上面这个又走了其他的
config.module.rule('svg').exclude.add(dir) , // 其他 svg loader 排除 icons 目录
svg sprite loader的作用:他把我们导入的svg文件们变成symbol标签们(会有个id),把symbol标签外面包一个svg标签,把svg标签放入body里。接下来我们就可以用svg标签包着use标签(用xlink:href指向那个id)就可以使用那个svg了。
SVG的引入历程的更多相关文章
- HTML5 学习总结(四)——canvas绘图、WebGL、SVG
一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...
- canvas绘图、WebGL、SVG
目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML ...
- HTML5 学习笔记(四)——canvas绘图、WebGL、SVG
一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...
- HTML学习总结(四)【canvas绘图、WebGL、SVG】
一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...
- svg从入门到装逼(一)
svg文件是基于xml的矢量图,而canvas是基于html和js的位图.关于两者的比较,在粗就不赘述了. 1. 首先来上一个svg的基本结构: <?xml version="1.0 ...
- SVG笔记
SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG是W3C("World Wide Web C ...
- toolTip(用svg制作出富有动态的对话框)
昨晚看了用svg如何制作富有动态的tooltip,于是今天就心血来潮学着做一下,于是也成功做出来,也明白其中的原理,收获颇多阿!接下来要多去学习svg,这是个好东西. 这其中也注意了一些平时纠结的细节 ...
- 【转】CSS和SVG中的剪切——clip-path属性和<clipPath>元素
本文由大漠根据SaraSoueidan的<Clipping in CSS and SVG – The clip-path Property and <clipPath> Elemen ...
- 【转】JavaScript操作SVG的一些知识
原文:http://blog.iderzheng.com/something-about-svg-with-javascript/ 前阵子学习了一下SVG(Scalable Vector Graphi ...
随机推荐
- bzoj 2839 集合计数 容斥\广义容斥
LINK:集合计数 容斥简单题 却引出我对广义容斥的深思. 一直以来我都不理解广义容斥是为什么 在什么情况下使用. 给一张图: 这张图想要表达的意思就是这道题目的意思 而求的东西也和题目一致. 特点: ...
- 埋在MySQL数据库应用中的17个关键问题!
作者:扎瓦陈序元 来源:https://blog.csdn.net/weixin_42882439 MySQL的使用非常普遍,跟MySQL有关的话题也非常多,如性能优化.高可用性.强一致性.安全.备份 ...
- day11.函数的全局变量和局部变量
一.定义 """ 局部变量 : 在函数内部定义的变量(局部命名空间) 全局变量 : 在函数外部定义的或者使用global在函数内部定义(全局命名空间) 作用域: 作用的范 ...
- 一个Java方法能使用多少个参数?
我最近给我fork的项目QuickTheories增加了一个接口: @FunctionalInterface public interface QuadFunction<A, B, C, D, ...
- ios 生成字母加数字的随机数
文章来自:http://blog.csdn.net/baidu_25743639/article/details/73801700 近期项目第三方登录之后默认创建账号和密码,就用随机数生产,这里只需要 ...
- Spring Boot 集成 Elasticsearch 实战
最近有读者问我能不能写下如何使用 Spring Boot 开发 Elasticsearch(以下简称 ES) 相关应用,今天就讲解下如何使用 Spring Boot 结合 ES. 可以在 ES 官方文 ...
- SpringBoot常用配置,引入外部配置文件信息,热加载
SpringBoot的配置文件格式 yml规范 SpringBoot的配置文件支持properties和yml,甚至还支持json. 更推荐使用yml文件格式: yml文件,会根据换行和缩进帮助咱们管 ...
- The Involution Principle
目录 Catalan Paths Vandermonde Determinant The Pfaffian Catalan Paths 从 \((0,0)\) 走到 \((n,n)\), 每次只能向上 ...
- Java入门到实践系列(2)——Java环境搭建
一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...
- scss @mixin & @include
定义一个带参数和默认值的mixin class // demo.scss @mixin button($background:#606266) { font-size: 1em; padding: 0 ...