改变SVG的颜色

时间:2014-12-11 07:06:34

标签: css3 svg fill

我有一些像这样的svg图像

circles.svg

<svg width="38" height="38" viewBox="0 0 38 38" xmlns="http://www.w3.org/2000/svg" stroke="#fff">
    <g fill="none" fill-rule="evenodd">
        <g transform="translate(1 1)" stroke-width="2">
            <circle stroke-opacity=".5" cx="18" cy="18" r="18"/>
            <path d="M36 18c0-9.94-8.06-18-18-18">
                <animateTransform
                    attributeName="transform"
                    type="rotate"
                    from="0 18 18"
                    to="360 18 18"
                    dur="1s"
                    repeatCount="indefinite"/>
            </path>
        </g>
    </g>
</svg>

并像这样使用

<img src="circles.svg" width="50" alt=""/>

但我不知道如何改变颜色

我试过了

.color{
 fill:red;
}

<img src="circles.svg" width="50" alt="" class="color"/>

但它不起作用,我不想改变SVG我只想通过html改变颜色,这是可能的,而不是编辑主SVG?

2 个答案:

答案 0 :(得分:2)

CSS不适用于文档边界。由于您的SVG位于不同的文档中,因此您无法在HTML中使用CSS来影响它的风格。

您需要在HTML文件中内联SVG。

答案 1 :(得分:0)

试试这个Link

HTML

<div>
     <svg width="38" height="38" viewBox="0 0 38 38" xmlns="http://www.w3.org/2000/svg" stroke="#fff">
        <g fill="none" fill-rule="evenodd">
            <g transform="translate(1 1)" stroke-width="2">
                <circle stroke-opacity=".5" cx="18" cy="18" r="18"/>
                <path d="M36 18c0-9.94-8.06-18-18-18">
                    <animateTransform
                        attributeName="transform"
                        type="rotate"
                        from="0 18 18"
                        to="360 18 18"
                        dur="1s"
                        repeatCount="indefinite"/>
                </path>
            </g>
        </g>
    </svg>
    </div>

CSS

div {
  color: blue;
}
div svg {
  fill: currentColor;
}