设置内联 SVG 的填充颜色 [重复]

Posted

技术标签:

【中文标题】设置内联 SVG 的填充颜色 [重复]【英文标题】:Set fill color of inline SVG [duplicate] 【发布时间】:2020-06-06 00:25:00 【问题描述】:

是否可以使用纯 CSS(无 JS)设置内联 SVG 的填充颜色?

我有一个包含一些内容的元素,我需要

    将内容重置为简单的 SVG 图像(基本上是字形) 动态重置该 SCG 的填充颜色(不是作为 SVG 的内联属性,因为该颜色来自 CSS 变量)

div 
  content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 10.586l5.293-5.293a1 1 0 011.414 1.414L13.414 12l5.293 5.293a1 1 0 01-1.414 1.414L12 13.414l-5.293 5.293a1 1 0 11-1.414-1.414L10.586 12 5.293 6.707a1 1 0 011.414-1.414L12 10.586z'/%3E%3C/svg%3E");
<div>Hello World<div>

现在可以把这个图标变成红色吗?

【问题讨论】:

请提供minimal reproducible example 你也可以添加你的html代码 如果你的 SVG 有一个 id 或 class 分配给它,你可以简单地在你的 CSS 中添加一个规则,比如#mySVG fill: 'any-color-you-like' 只有使用<svg> 元素将样式直接嵌入到文档中时,才能应用样式。在这方面,其他所有内容都不受限制 - <img>、iframe、对象、使用 background/content 将其设置为另一个元素的内容等 - 您可以的所有情况在您的主文档样式表中对其进行格式化。 伤心。不是有一些花哨的 CSS 过滤器魔术吗? 【参考方案1】:

您可以使用 css 中的 filter 属性来操作内联 svg 的颜色。 https://jsfiddle.net/cq9gm0jn/

div 
  content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 10.586l5.293-5.293a1 1 0 011.414 1.414L13.414 12l5.293 5.293a1 1 0 01-1.414 1.414L12 13.414l-5.293 5.293a1 1 0 11-1.414-1.414L10.586 12 5.293 6.707a1 1 0 011.414-1.414L12 10.586z'/%3E%3C/svg%3E");

div.red 
  filter: invert(50%)sepia(100%)saturate(10000%)
<div class="red">Hello World</div>
<div>Hello World</div>

【讨论】:

以上是关于设置内联 SVG 的填充颜色 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

css 在SVG文件中,确保没有内联填充颜色以确保其有效。适用于所有浏览器

css 在SVG文件中,确保没有内联填充颜色以确保其有效。适用于所有浏览器

css 在SVG文件中,确保没有内联填充颜色以确保其有效。适用于所有浏览器

使用JQuery更改svg内的填充颜色[重复]

更改通过背景图像加载的 SVG 图像的填充颜色 [重复]

img src SVG改变填充颜色