css - 如何更改 CSS 内容属性中 SVG 图像的颜色?

标签 css svg

我想通过内容属性 bootstrap-style 使用 SVG 图像作为 CSS Sprite ,像这样:

i.rectangle-image {
  content: url(rectangle.svg);
}

这是我的 SVG:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="80" height="80"/>
</svg>

和建议的 HTML:

<div><i class="rectangle-image"></i> Hello, world!</div>

我希望能够在我的应用程序中重新为 SVG 着色,例如让图标在某些位置显示为紫色,在其他位置显示为白色。我知道我可以通过使用三个不同的 SVG 文件(或数据 URI)来实现此目的 fill <rect> 上的属性设置不同标签,但我想知道是否有办法通过 HTML 中的 CSS 来做到这一点?

我尝试添加 fill属性为i.rectangle-image选择器,但这不起作用。

我看过this answer这并不完全是我想要的。他们建议在整个页面中嵌入 SVG,我更喜欢通过 CSS content 来做到这一点如果可能的话。有什么想法吗?难道是我运气不好?

最佳答案

如果您使用 CSS 内容工具,您基本上会将 SVG 数据作为图像加载。出于隐私原因,您无法使用外部 CSS 或 JavaScript 影响图像的显示方式。

如果您想更改 SVG 数据的内容,您必须通过 <object> 加载它。或<iframe>标记或将其内嵌在 HTML 文件中。

关于css - 如何更改 CSS 内容属性中 SVG 图像的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358104/

相关文章:

javascript - 只是段落长度不同,div 的对齐方式略有不同

html - 打印时缩放 HTML 以适合一页

javascript - 循环 td

javascript改变svg形状的颜色

svg - svg的x和dx属性有什么区别?

css - 表头是否响应分配给表行的悬停?

javascript - CSS/jQuery 悬停效果在图像上显示一些文本,但在移动设备上必须单击两次

javascript - SVG 使虚线变为实线

d3.js - 如何在强制布局中拖动时将 svg 元素对齐到网格

html - 在 SVG 中居中图像