【问题标题】:SVG is displayed with wrong colorsSVG 以错误的颜色显示
【发布时间】:2020-11-09 22:12:25
【问题描述】:

我有一个SVG file,我在我的 React 网页中导入了它。问题是SVG displayed has some of its colors wrong

正如您在网页上看到的,有 3 个 SVG。其中 2 个以错误的颜色显示。但是第一个具有原始颜色。虽然 3 SVG 导入和使用方式完全相同。

在 MyPage.jsx 中,我将它们导入

import Hanshake from '../images/handshake.svg';
import Logistics from '../images/logistics.svg';
import Designer from '../images/designer.svg';

然后像这样简单地使用它:

    <Col xs={24} md={8} className='about_illustration_text'>
      <Hanshake />
      Some text
    </Col>
    <Col xs={24} md={8} className='about_illustration_text'>
      <Logistics />
      Some text
    </Col>
    <Col xs={24} md={8} className='about_illustration_text'>
      <Designer />
      Some text
    </Col>

我没有发现任何 CSS 冲突。

这些 SVG 有什么问题?

【问题讨论】:

    标签: reactjs image web svg gatsby


    【解决方案1】:

    冲突的 CSS 规则。每个 SVG 都使用 &lt;linearGradient&gt; 定义(查看 &lt;defs&gt; 部分的内部),并且它们使用相同的 Id。

    这些渐变被如下样式属性引用:

    style="fill:url(#_Linear11);"
    

    将所有 SVG 内容插入到一个页面后,有多个 &lt;linearGradient&gt; 元素具有相同的 id 作为同一个 DOM 的一部分。 ID 在整个页面中必须是唯一的,否则引用会相互覆盖。

    【讨论】:

    • 感谢@ccprog 和 Ferran Buireu 的回答,现在可以使用了!
    【解决方案2】:

    您正在使用 fill:url(#_Linear1) 规则(#_Linear1 部分)覆盖您的 fill 样式。如果您将 2 个该 SVG 放在同一个 CodePen 中,您将看到它们如何更改其 fill,因为它们是冲突的。同一个文件中有 3 个,事情变得很奇怪。

    将您的 url(#_Linear1) 更改为 rgb 纯色/背景或为每个背景元素使用唯一标识符。

    【讨论】:

    • 澄清一下,这就是为什么它们在单独的页面上看起来不错的原因,因此您共享的代码笔,但当它们都在同一页面上时却不是。
    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多