【问题标题】:SVGs in React & Tailwind CSS — fill: "currentColor" not workingReact 和 Tailwind CSS 中的 SVG — 填充:“currentColor”不起作用
【发布时间】:2021-08-29 22:45:05
【问题描述】:

我正在尝试使用 Tailwind CSS 让 SVG 在深色模式下更改颜色。这意味着我必须使用类似text-white 的类(在纯CSS 中转换为--tw-text-opacity: 1; color: rgba(255, 255, 255, var(--tw-text-opacity));)来设置SVG 的填充颜色。然后我可以添加另一个 Tailwind 类,例如 dark:text-black,当用户启用暗模式时,它应该使 SVG 变黑。

但是,即使 SVG 已正确格式化以使用 fill: currentColor,填充也不匹配父元素(img 标记)的 currentColor(文本颜色)。

我做错了什么?

HTML

<img
  className="w-auto h-12 mx-auto mt-12 text-black rounded-full p-x4 dark:text-white"
  src="/brand/cerebrum-full.svg"
/>

SVG

<style type="text/css">
    .currentColorFill{fill:currentColor !important;}
</style>
<g>
  <path
    className="currentColorFill"
    d="M284.6,124.1v-0.2c0-23.8,17.9-43.3,43.6-43.3c15.8,0,25.2,5.3,33,12.9l-11.7,13.5c-6.5-5.9-13-9.4-21.4-9.4
      c-14.1,0-24.3,11.7-24.3,26v0.2c0,14.3,9.9,26.3,24.3,26.3c9.6,0,15.4-3.8,22-9.8l11.7,11.8c-8.6,9.2-18.2,14.9-34.3,14.9
      C302.9,167.2,284.6,148.2,284.6,124.1z"
  />
  <path class="currentColorFill" d="M412.3,25.5h3.4v6c1.7-3.8,5-6.6,9.3-6.4v3.7h-0.3c-5,0-9.1,3.6-9.1,10.5v9.1h-3.4V25.5z"/>

</g>

【问题讨论】:

    标签: reactjs svg tailwind-css


    【解决方案1】:

    (搞清楚后自己回答……)

    发生这种情况是因为您使用图像标签嵌入 SVG。我建议使用类似svg-to-react-cli NPM package 的组件从组件中导入 SVG。

    假设您的 SVG 名为“AcmeLogo”,并且您将其保存为 AcmeLogo.svg。以下是将您的 AcmeLogo.svg 文件转换为 React 组件的步骤:

    1. 在终端中运行npm install -g svg-to-react-cli
    2. 像这样运行svgtoreact &lt;PATH_TO_SVG&gt; &lt;PATH_TO_EXPORT_REACT COMPONENT&gt;
      • svgtoreact /path/to/AcmeLogo.svg /path/to/AcmeLogo.js

    现在,将AcmeLogo.js 导入您的 React 页面并将您的类添加到组件中,如下所示:

    import AcmeLogo from "components/AcmeLogo.js";
    
    <AcmeLogo className="w-auto h-12 mx-auto mt-12 text-black p-x4 dark:text-white" />
    

    这应该可以!现在您可以尝试从浅色模式更改为深色模式,您应该会看到 SVG 的填充颜色会根据文本颜色发生变化。

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2022-10-23
      • 1970-01-01
      • 2018-12-22
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      相关资源
      最近更新 更多