You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用vite-plugin-svgr修改SVG图标颜色的问题

解决Vite + Emotion + vite-plugin-svgr修改SVG图标颜色无效的问题

问题原因

你的SVG文件里,<path>标签带有内联style="fill: rgb(0, 0, 0);",同时SVG根标签也设置了fill="#FF0000"。这些内联样式的优先级远高于Emotion注入的外部CSS,导致你设置的fill: blue无法生效。

解决方案

方案1:清理SVG内部的硬编码样式(推荐)

直接编辑你的dummy.svg文件,移除所有硬编码的fill属性和内联样式:

<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">
    <path d="..."/>
</svg>

修改后,原代码中的Emotion样式就能正常生效:

import { ReactComponent as MyIcon } from "../icons/dummy.svg";
import { css } from '@emotion/react';

function MyComponent() {
  const icon = css({
    fill: "blue", // 现在可以正常生效
  });

  return <MyIcon css={icon} />;
}

方案2:强制覆盖(不推荐,仅应急用)

如果无法修改原SVG文件,可以用!important强制提升样式优先级:

const icon = css({
  fill: "blue !important",
});

注意:这种方法会破坏CSS优先级的正常逻辑,可能引发后续样式冲突,尽量避免使用。

方案3:直接通过props传递样式

也可以直接给SVG组件传递style属性,效果和Emotion样式一致(同样需要先清理SVG内部硬编码):

function MyComponent() {
  return <MyIcon style={{ fill: "blue" }} />;
}

内容的提问来源于stack exchange,提问作者julian.a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:10:54