如何将颜色应用于SVG Text元素

Bas*_*ers 64 html5 svg text css3

好的......我在这里疯了.我已经开始尝试使用SVG了.使用SVG并将CSS类应用于它就像一个魅力.我只是无法弄清楚我做错了什么,但我不能让这个类在svg文本元素上工作.我一直把它剥掉了,这就是我得到的:

<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'>
    <title>Playground</title>
</head>
<body>
    <style type="text/css">
        .mainsvg {
            height: 320px;
            border: 1px solid red;
            width: 400px;
        }
        .caption {
            color: yellow;
        }
    </style>
    <h2>SVG - Sandbox</h2>
    <div>
        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="mainsvg">
            <text x="65" y="40" class="caption">Fact</text>
        </svg>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

根据http://www.w3.org/TR/SVG/styling.html#ClassAttribute这应该工作...

关于改变什么或替代方案的任何提示/提示?

Rob*_*son 80

设置类是正确的,但CSS颜色属性对SVG没有影响.SVG使用填充描边属性.在您的情况下,您可能只需要更改颜色来填充.这会在Firefox中显示黄色文本.

<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'>
    <title>Playground</title>
</head>
<body>
    <style type="text/css">
        .mainsvg {
            height: 320px;
            border: 1px solid red;
            width: 400px;
        }
        .caption {
            fill: yellow;
        }
    </style>
    <h2>SVG - Sandbox</h2>
    <div>
        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="mainsvg">
            <text x="65" y="40" class="caption">Fact</text>
        </svg>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 只设置`color`属性在svg中没有直接可见的效果,但你可以将这种颜色用于`fill`,`stroke`甚至两者,例如`text {fill:currentColor}`. (7认同)
  • 干得好,你在SVG规范中发现了一个错误.我已经向w3c报告过:http://lists.w3.org/Archives/Public/www-svg/2013Jul/0001.html (4认同)
  • 试过了,不行……记住。颜色是他们在 W3 推荐中给出的示例。我将其简化为颜色,以获得最简单的实现来进行测试。 (2认同)

Jos*_*nce 7

这是 Google 为 SVG 文本着色的最高结果,让像我这样的新手非常清楚,在 2022 年为 SVG 文本元素着色、使用描边和填充。

fill="red"
stroke="#0000FF"
Run Code Online (Sandbox Code Playgroud)

就像您使用描边作为形状的轮廓颜色并使用填充作为形状的内部颜色一样,您可以对 SVG 中的文本执行相同的操作。

最好的消息是,如果您fill="currentColor"不使用硬编码颜色,则可以使用 CSS 设置 SVG 文本。

svg {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

单击运行代码片段即可查看此答案中的示例。

fill="red"
stroke="#0000FF"
Run Code Online (Sandbox Code Playgroud)