我应该使用<;img>,<;对象>,或<;嵌入>用于以类似于加载jpg、gif或png的方式将SVG文件加载到页面中
为确保其尽可能好地工作,每个项目的代码是什么(在我的研究中,我看到了包括mimetype或指向回退SVG渲染器的参考资料,但没有看到一个良好的最新参考资料)。
假设我正在使用Modernizer检查SVG支持,并对不支持SVG的浏览器进行回退(可能使用普通的<;img>;标记进行替换)
我可以推荐SVG入门(由W3C发布),它涵盖了以下主题:http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#SVG_in_HTML
如果您使用<;对象>然后您可以免费获得光栅回退*:
<;object data=“your.svg”type=“image/svg+xml”>;
<;img src=”https://stackoverflow.com/questions/4476526/yourfallback.jpg“/>;
</对象>;
*)好吧,不是完全免费的,因为有些浏览器下载了这两种资源,请参阅下面拉里的建议,了解如何绕过这一点
2014年更新:
-
如果需要非交互式svg,请使用
<;img>与脚本回退
到png版本(适用于较旧的IE和android<;3)。一清二楚
方法是:<;img src=”https://stackoverflow.com/questions/4476526/your.svg“onerror=“this.src=”https://stackoverflow.com/questions/4476526/your.png“>这将表现得很像GIF图像,如果您的浏览器支持声明性动画(SMIL),则将播放这些动画
-
如果需要交互式svg,请使用
<;iframe>或<;对象> -
如果需要为较旧的浏览器提供使用svg插件的功能,请使用
<;嵌入> -
对于css
background image中的svg和类似属性,Modernizer是切换到回退图像的一种选择,另一种选择是根据多个背景自动执行:div{ 背景图片:url(fallback.png); 背景图片:url(your.svg),无; }注意:多背景策略在Android 2.3上不起作用,因为它支持多背景,但不支持svg。
关于svg回退的另一篇博文值得一读