我是否使用<img&gt&书信电报;对象>,或<嵌入>对于SVG文件?

我应该使用<img&gt,<对象&gt,或<嵌入&gt用于以类似于加载jpggifpng的方式将SVG文件加载到页面中

为确保其尽可能好地工作,每个项目的代码是什么(在我的研究中,我看到了包括mimetype或指向回退SVG渲染器的参考资料,但没有看到一个良好的最新参考资料)。

假设我正在使用Modernizer检查SVG支持,并对不支持SVG的浏览器进行回退(可能使用普通的<img>标记进行替换)

我可以推荐SVG入门(由W3C发布),它涵盖了以下主题:http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#SVG_in_HTML

如果您使用<对象&gt然后您可以免费获得光栅回退*:

<object data=“your.svg”type=“image/svg+xml”>
<img src=”https://stackoverflow.com/questions/4476526/yourfallback.jpg“/>
&lt/对象>

*)好吧,不是完全免费的,因为有些浏览器下载了这两种资源,请参阅下面拉里的建议,了解如何绕过这一点

2014年更新:

  • 如果需要非交互式svg,请使用<img&gt与脚本回退
    到png版本(适用于较旧的IE和android<3)。一清二楚
    方法是:

    <img src=”https://stackoverflow.com/questions/4476526/your.svg“onerror=“this.src=”https://stackoverflow.com/questions/4476526/your.png“&gt

    这将表现得很像GIF图像,如果您的浏览器支持声明性动画(SMIL),则将播放这些动画

  • 如果需要交互式svg,请使用<iframe&gt或<对象&gt

  • 如果需要为较旧的浏览器提供使用svg插件的功能,请使用<嵌入&gt

  • 对于cssbackground image中的svg和类似属性,Modernizer是切换到回退图像的一种选择,另一种选择是根据多个背景自动执行:

    div{
    背景图片:url(fallback.png);
    背景图片:url(your.svg),无;
    }
    

    注意:多背景策略在Android 2.3上不起作用,因为它支持多背景,但不支持svg。

关于svg回退的另一篇博文值得一读

发表评论