在SVG的颜色覆盖物作为背景

时间:2014-09-29 14:45:14

标签: css css3 svg

我正在使用SVG sprites来创建一个图标系统。我正在使用gulp-svg-sprites生成精灵并使用symbol选项,因此在调用每个SVG时,我可以使用以下简单的内容:

<svg class="icon"><use xlink:href="sprite/svg/symbols.svg#icon-alert"></use></svg>

使用fill: currentColor我还可以控制每个图标的颜色,这也很棒。

当我需要将这些图标用作背景元素时,会出现问题。我知道你不能使用xlink:href从sprite中获取一个特定的图标 - 并且可以在这里需要时抓住单个SVG,但是当我需要更改那个的填充/颜色时会出现问题被引用为背景图像的SVG。

-webkit-background-clip: text;之类的东西非常适合应用不同的背景并根据文字切断,但我需要一个可以按需切换的纯色覆盖。

是否有一个简单的SVG滤镜我可以附加到这个背景上(引用为SVG),我可以将其固定在这个上面?非常感谢任何帮助。谢谢!

更新

Here is a working example。但是,我正在寻找可以在IE9中运行的东西,这就是为什么我希望有别的东西。

2 个答案:

答案 0 :(得分:1)

使用我编写的LESS函数编写了一篇文章,该函数在使用LESS http://zslabs.com/articles/svg-background-fill

进入后编辑SVG对象

答案 1 :(得分:0)

您可以应用滤镜来更改整个元素的颜色(包括背景) - 但在大多数情况下,您无法根据需要选择性地将其应用于背景。如果你有一个确切的在线例子,你想要覆盖的确切案例 - 对于你的确切情况可能会有一些非常具体的解决方案(例如,如果你的前景都是黑色的,那么彩色矩阵滤波器可能会起作用。 ))