【发布时间】:2018-08-31 21:01:40
【问题描述】:
是否可以在不修改 svg 文件内容的情况下使用 css 设置外部 svg 文件的样式?
<img src="image/svg/3ds-max.svg">
还有没有更好的方法在 html5 中显示外部 svg 文件?
【问题讨论】:
是否可以在不修改 svg 文件内容的情况下使用 css 设置外部 svg 文件的样式?
<img src="image/svg/3ds-max.svg">
还有没有更好的方法在 html5 中显示外部 svg 文件?
【问题讨论】:
不可能使用img标签,就访问或修改它们而言,它们基本上类似于位图。您可以使用 <iframe> 标记及其样式属性,或者只是在文件中包含 svg 内联,您可以使用 html5 执行此操作。
【讨论】:
几乎。如果您可以使用 svg 标签将 SVG 直接嵌入到 HTML5 文档中,那么您可以使用 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>
【讨论】:
自从提出这个问题以来,情况发生了一些变化。您可以使用 SVG 注入器使 SVG 内联。
使用SVGInject,您可以像这样添加您的 SVG:
<img src="image/svg/3ds-max.svg" onload="SVGInject(this)" >
在加载后,注入器将用 SVG 文件中的 <svg> 元素替换 <img> 元素。然后,您可以像 HTML DOM 中的任何其他元素一样设置 SVG 的所有元素的样式。
免责声明:我是 SVGInject 的作者之一。
【讨论】: