极简记账之SVG引入 bug

141 阅读1分钟

在小灰记账项目中我使用了 svg-sprite-loader 进行SVG引入

现在发现了svg-sprite-loader使用中的一个bug

  • 先说说我想达到的效果:

图中有三个icon,分别是标签、记账、统计,这三个icon是我从iconfont引入的SVG图标,当我点击某个icon时,被点击的icon会有高亮成红色的效果,并进入对应的导航页

  • 目前遇到的问题是:

我点击了记账的icon,然后记账icon高亮红色正常,但是我并没有设置高亮绿色

  • 解决的过程

首先我把自己对icon文件添加的SCSS都看了一遍,没看出问题

那问题估计就在SVG的源文件上了

仔细看一遍,发现SVG源码中有一个fill属性,这个属性给了icon一个默认且不可更改的颜色

  • 怎么解决

直接把fill属性手动移除,简单粗暴,但是问题来了,如果有100个SVG都带有fill属性呢,很显然这个方法有点不太好

那怎么解决呢?

能不能写一段代码,自动把SVG里面的fill属性移除呢?

下面是我搜了很久发现的一个答案,在vue.config.js里加上如下代码,完美解决

.use('svgo-loader').loader('svgo-loader')
      .tap(options => ({...options, plugins: [{removeAttrs: {attrs: 'fill'}}]})).end()