我有以下代码:

<span>
   <svg height="32" version="1.1" width="32" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; left: -0.0166626px; top: -0.983337px;">
      <desc></desc>
      <defs/>
      <path style="" fill="#333333" stroke="none" d="M15.985,5.972C8.422,5.972,2.289999999999999,10.049,2.289999999999999,15.078C2.289999999999999,17.955,4.302999999999999...............1,27.68,22.274Z"/>
    </svg>
</span>

是否有可能用CSS或其他方法改变SVG路径的填充颜色,而不实际改变<path>标记内?


当前回答

是的,您可以将CSS应用到SVG,但您需要匹配元素,就像样式化HTML时一样。如果你只是想把它应用到所有的SVG路径,你可以使用,例如:

​path {
  fill: blue;
}​

外部CSS似乎覆盖了路径的fill属性,至少在我测试的基于WebKit和gecko的浏览器中是这样。当然,如果你写<path style="fill: green">,那么它也会覆盖外部CSS。

其他回答

改变任何SVGs的颜色 使用标记添加SVG图像。

<img src="dotted-arrow.svg" class="filter-green"/>

要过滤为特定的颜色,使用以下Codepen(单击此处打开Codepen)将十六进制颜色代码转换为CSS过滤器: 例如,#00EE00的输出为

filter: invert(42%) sepia(93%) saturate(1352%) hue-rotate(87deg) brightness(119%) contrast(119%);

将CSS过滤器添加到这个类中。

.filter-green{
    filter: invert(48%) sepia(79%) saturate(2476%) hue-rotate(86deg) brightness(118%) contrast(119%);
}

这是一个简单的解决方案,适用于我:

将SVG放在带有“id”的div标签中

then

#id-div svg g {
     fill: #3366FF; 
}

你把这个CSS for SVG圈。

svg:hover circle{
    fill: #F6831D;
    stroke-dashoffset: 0;
    stroke-dasharray: 700;
    stroke-width: 2;
}

可以更改svg的路径填充颜色。请看下面的CSS代码片段:

为所有路径应用颜色:svg > path{fill: red} 要应用第一个d路径:svg > path:n -of-type(1){fill: green} 要应用第二个d路径:svg > path:n -of-type(2){fill: green} 要应用不同的d路径,只需更改路径号: 要在Angular 2到8中支持CSS,请使用封装概念:

:host::ng-deep svg path:nth-of-type(1){
        fill:red;
    }

是的,您可以将CSS应用到SVG,但您需要匹配元素,就像样式化HTML时一样。如果你只是想把它应用到所有的SVG路径,你可以使用,例如:

​path {
  fill: blue;
}​

外部CSS似乎覆盖了路径的fill属性,至少在我测试的基于WebKit和gecko的浏览器中是这样。当然,如果你写<path style="fill: green">,那么它也会覆盖外部CSS。