当前位置: 首页 > 面试题库 >

如何更改svg元素的颜色?

韦繁
2023-03-14
问题内容

我想使用这项技术并更改svg颜色,但到目前为止我还没有做到这一点。我把它放在css中,但是无论如何我的图像总是黑色的。我的代码:

.change-my-color {

  fill: green;

}


<svg>

    <image class="change-my-color" xlink:href="https://svgur.com/i/AFM.svg" width="96" height="96" src="ppngfallback.png" />

</svg>

问题答案:

您不能以这种方式更改图像的颜色。如果将SVG加载为图像,则无法在浏览器中使用CSS或Javascript更改其显示方式。

如果你想改变你的SVG图像,你必须用它来装载<object><iframe>或使用<svg>在线。

如果要使用页面中的技术,则需要Modernizr库,您可以在其中检查SVG支持并有条件地显示或不显示后备图像。然后,您可以内联SVG并应用所需的样式。

见:

#time-3-icon {

   fill: green;

}



.my-svg-alternate {

  display: none;

}

.no-svg .my-svg-alternate {

  display: block;

  width: 100px;

  height: 100px;

  background-image: url(image.png);

}


<svg width="96px" height="96px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">

<path id="time-3-icon" d="M256,50C142.229,50,50,142.229,50,256c0,113.77,92.229,206,206,206c113.77,0,206-92.23,206-206

    C462,142.229,369.77,50,256,50z M256,417c-88.977,0-161-72.008-161-161c0-88.979,72.008-161,161-161c88.977,0,161,72.007,161,161

    C417,344.977,344.992,417,256,417z M382.816,265.785c1.711,0.297,2.961,1.781,2.961,3.518v0.093c0,1.72-1.223,3.188-2.914,3.505

    c-37.093,6.938-124.97,21.35-134.613,21.35c-13.808,0-25-11.192-25-25c0-9.832,14.79-104.675,21.618-143.081

    c0.274-1.542,1.615-2.669,3.181-2.669h0.008c1.709,0,3.164,1.243,3.431,2.932l18.933,119.904L382.816,265.785z"/>

</svg>



<image class="my-svg-alternate" width="96" height="96" src="ppngfallback.png" />

您可以内嵌SVG,并使用类名称(my-svg-alternate)标记后备图片:

<svg width="96px" height="96px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path id="time-3-icon" .../>
</svg>

<image class="my-svg-alternate" width="96" height="96" src="ppngfallback.png" />

在CSS中,使用no-svgModernizr中的类CDN:来检查SVG支持。如果不支持SVG,则将忽略SVG块并显示图像,否则将图像从DOM树(display:none)中删除:

.my-svg-alternate {
  display: none;
}
.no-svg .my-svg-alternate {
  display: block;
  width: 100px;
  height: 100px;
  background-image: url(image.png);
}

然后,您可以更改内联元素的颜色:

#time-3-icon {
   fill: green;
}


 类似资料:
  • 此外,我尝试以以下方式使用对象标记: 但是,同样,如果我用CSS指令或将类应用到对象标记,则不会发生任何变化。有什么想法可以实现我想要的吗?

  • 我想使用这种技术并更改SVG颜色,但到目前为止我还没能这样做。我把这个放在CSS中,但我的图像总是黑色的,不管怎么样。 我的代码: null null

  • 问题内容: 我想使用CSS 更改标签的颜色。我在下面尝试过的代码似乎不起作用: 问题答案: 我想如果您打算更改tag 产生的线条的颜色,则应该使用而不是。 虽然,在注释中已指出,如果您更改线条的大小,边框仍将与样式中指定的宽度一样,并且线条将被填充为默认颜色(大多数情况下这不是理想的效果)时间)。因此,在这种情况下,您似乎还需要指定(如@Ibu在其答案中建议的那样)。 HTML 5 Boilerp

  • 主要思想是,我正在寻找将SVG添加到伪元素的最佳方法,该伪元素仍然保持其颜色变化(用于悬停)。所有这些最好没有HTML,而绝对不是JS。我正在寻找一个更简单的插件类,这是他们那种只使用CSS的解决方案。 我在这里读到了一篇讨论:有没有办法在伪元素::before或::after中使用SVG作为内容 在这里,人们主要谈论的是将其添加为这样的内容: 内容:url(数据:图像/svg xml,xml版本

  • 我有一个固定的头与一个标志和一些文本。这些元素当前为白色。(背景颜色:#fff) 当我向下滚动时,各部分以不同的背景颜色显示: 我想改变标题中元素的颜色,这取决于标题当前在上面的部分。我可以做混合模式(白色/黑色),但我也有绿色部分。我也可以这样做,检查什么部分是在视图中,然后改变颜色。 但是我想知道是否有某种方法可以通过JavaScript获得当前在header下面的元素(在div下面的div)

  • 好。。。我在这里疯了。我已经开始尝试使用 SVG。使用 SVG 并对其应用 CSS 类就像一个魅力。我只是无法弄清楚我做错了什么,但我只是无法让类在svg文本元素上工作。我已经把它一直剥离了,这就是我得到的: 根据http://www.w3.org/TR/SVG/styling.html#ClassAttribute这应该行得通。。。 关于要更改的内容或替代方案的任何提示/提示?