svg-icon图片不能改颜色

svg-icon图片不能改颜色

svg-icon 为啥变不了颜色?

因为 去字体图标库下载的时候选了颜色 ,那svg文件里就自带了fill属性,所以 我们在外面用color改不了svg的颜色。

可以使用下面两种方法改变svg图片的颜色:

1、改变svg-icon图片代码中的fill属性的值(常用)

将fill属性的颜色填充值,

fill="#409EFF"

改为

fill="currentColor"

就可以使用color属性在css代码中,给svg图片改变颜色了,如下图所示:
填充了fill属性的svg图片
去掉fill填充属性的svg图片

.svg{
	color: #ccc;
}

或者

在svg标签中定义一个class类,在class中添加fill:currentColor,然后添加color:red,就可以修改svg图标的颜色了,如下:

.svg{
    fill:currentColor;
    color:red;
}

2、全局加这个样式(不常用)

path { fill: inherit !important }

就可以给 svg 用 fill或者color去改变颜色了。

<think>好的,我现在需要帮助用户解决如何使用svg-inject修通过img标签引入的SVG颜色的问题。首先,我需要回顾用户提供的引用内容,看看里面有没有关键步骤或示例。 根据引用[1]和[2],用户需要在img标签中添加onload="SVGInject(this)",并引入svg-inject.min.js脚本。同时,引用[1]中的CSS样式使用了.svg-img g { fill: blue; },这说明通过给img元素添加类名,然后定义CSS样式来SVG内部元素的颜色。但是,可能需要注意SVG的结构,比如是否包含<g>标签或者其他元素。 接下来,我需要整理步骤。首先,用户需要引入svg-inject库,可以通过script标签链接。然后,在img标签中设置onload事件调用SVGInject函数。之后,通过CSS选择器来指定SVG内部的元素,并设置fill属性。需要注意的是,SVG文件本身可能需要支持颜色覆盖,比如没有内联的fill属性,否则可能需要使用!important来覆盖。 另外,用户提供的引用[3]和[4]提到了svg-inject的项目地址和文档,可能需要参考这些资源来确保步骤的正确性。例如,检查是否有版本差异或者额外的配置选项。 可能遇到的问题包括:CSS样式没有正确应用,可能是因为选择器不够具体,或者SVG内部元素的结构不同。这时候可能需要使用开发者工具检查注入后的SVG结构,调整CSS选择器。此外,缓存问题也可能导致修不生效,需要清除缓存或使用强制刷新。 最后,生成相关问题时,需要考虑用户可能进一步想知道如何动态颜色,处理多个图标,或者解决常见问题,比如颜色不变化的原因。</think>### 如何用 `svg-inject` 修 `img` 标签引入的 SVG 颜色 #### 1. **引入 `svg-inject` 库** 在 HTML 的 `<head>` 中添加脚本引用: ```html <script src="https://cdn.jsdelivr.net/npm/@iconfu/svg-inject@0.4.1/dist/svg-inject.min.js"></script> ``` 或通过 npm 安装后本地引用[^3][^4]。 #### 2. **添加 `img` 标签并绑定注入函数** 为需要修颜色SVG 图片添加 `onload="SVGInject(this)"` 属性和自定义类名(如 `svg-icon`): ```html <img class="svg-icon" src="image.svg" onload="SVGInject(this)" /> ``` #### 3. **通过 CSS 控制颜色** 定义 CSS 规则,选择 SVG 内部元素(如路径 `<path>` 或分组 `<g>`)并设置 `fill` 属性: ```css .svg-icon path { fill: #ff0000; /* 红色 */ } ``` 若 SVG 结构复杂,可使用更精确的选择器(例如 `.svg-icon g[fill="original"]`)[^1]。 --- #### **关键原理** `svg-inject` 会将 `img` 标签的 SVG 文件内容**内联注入到 DOM 中**,使其变为可操作的 DOM 元素。通过 CSS 直接控制内联 SVG 的样式即可修颜色[^1]。 --- #### **注意事项** 1. **SVG 文件需支持样式覆盖**:若 SVG 内联了 `fill` 属性(如 `<path fill="#000" ...>`),需在 CSS 中使用 `!important` 强制覆盖: ```css .svg-icon path { fill: #00f !important; } ``` 2. **动态修颜色**:可通过 JavaScript类名或直接操作 DOM: ```javascript document.querySelector('.svg-icon').classList.add('new-color'); ``` 对应 CSS: ```css .new-color path { fill: green; } ``` 3. **缓存问题**:修后若未生效,尝试清除浏览器缓存或添加随机查询参数(如 `image.svg?v=2`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值