我有一个页面,其中包含几个SVG文件。为了同步这些SVG文件的样式,我想创建一个样式表来保存所有样式信息。链接到由IMG标签嵌入的SVG中的CSS
但是,当像下面那样包含SVG时,CSS将不会被应用。任何人有解决这个问题的方法,或者只是不可能链接到由<img src="..." />
引用的SVG中的其他(CSS)文件?
请参阅下面的示例代码。当直接在浏览器中加载pic.svg
时,所有样式都会被应用,并且可以看到一个绿色的矩形。但是当开放page.htm
所有有看到是一个黑色的矩形。所以显然没有应用定义的样式。
page.htm
<!DOCTYPE html>
<html>
<body>
<img src="pic.svg" style="width: 100px; height: 100px;" />
</body>
</html>
pic.svg
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<?xml-stylesheet type="text/css" href="styles.css" ?>
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 100 100"
>
<rect x="10" y="10" width="80" height="80" />
</svg>
styles.css的
rect {
stroke: black;
fill: green;
}
编辑
从一个答案,这短暂的时间出现在这里,我得到this link to the spec和以下引文。在我看来,这表明,上面的代码应该工作!嵌入到HTML或XML文档中的 'IMG', '对象'(HTML)或 '图像'(SVG)
独立的SVG文档元素
[...]
从链接引用“引用的SVG文档中任何地方所定义的样式表(style元素或样式属性,或在与该样式表处理指令联外部样式表)申请整个SVG文档,但不要(参考HTML或XHTML)。“
但在这种情况下,我会再次为每个SVG文件定义一个样式。这与我发布的规格提取物有什么关系? – Sirko
如果您想共享样式定义,则不能使用图像标签。安全问题往往会忽略通常不考虑这些事情的规范要求。 –
显然,这也意味着您不能从通过HTML文件加载的SVG文件引用外部字体。 –