问题 是否可以使用css设置外部svg文件的样式?


是否可以在不修改svg文件内容的情况下使用css设置外部svg文件的样式?

<img src="image/svg/3ds-max.svg">

有没有更好的方法在html5中显示外部svg文件?


7437
2018-01-31 15:18


起源



答案:


使用img标签是不可能的,就访问或修改它们而言,它们基本上类似于位图。你可以使用 <iframe> 相反,或者只是在文件中包含svg内联,你可以使用html5。


9
2018-01-31 16:57



当:(任何人都有这样的原因链接? - Bradley Flood
@BradleyFlood longsonr.wordpress.com/2013/10/23/... - Robert Longson


答案:


使用img标签是不可能的,就访问或修改它们而言,它们基本上类似于位图。你可以使用 <iframe> 相反,或者只是在文件中包含svg内联,你可以使用html5。


9
2018-01-31 16:57



当:(任何人都有这样的原因链接? - Bradley Flood
@BradleyFlood longsonr.wordpress.com/2013/10/23/... - Robert Longson


几乎。如果您可以使用以下命令将SVG直接嵌入HTML5文档中 svg 标签,然后您可以使用CSS设置样式,如下所示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            #redcircle { stroke:black; stroke-width:5; }
        </style>
    </head>
    <body>
        <svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
            <circle id="redcircle" cx="50" cy="50" r="30" fill="red" /> 
        </svg>
    </body>
</html>

3
2018-01-31 17:10



他要求外部svg,而不是内联 - grm
真正。但通常知道最近的替代品是很好的。 - james.garriss


自问这个问题以来,事情发生了一些变化。您可以使用SVG注入器使SVG内联。

SVGInject 你可以像这样添加你的SVG:

 <img src="image/svg/3ds-max.svg" onload="SVGInject(this)" >

喷油器将取代 <img> 元素与 <svg> 加载后来自SVG文件的元素。然后,您可以像在HTML DOM中的任何其他元素一样设置SVG的所有元素的样式。

免责声明:我是SVGInject的作者之一。


2
2017-08-31 13:01