htmlsvgvector-graphics

Do I use <img>, <object>, or <embed> for SVG files?


Should I use <img>, <object>, or <embed> for loading SVG files into a page in a way similar to loading a jpg, gif or png?

What is the code for each to ensure it works as well as possible? (I'm seeing references to including the mimetype or pointing to fallback SVG renderers in my research and not seeing a good state of the art reference).

Assume I am checking for SVG support with Modernizr and falling back (probably doing a replacement with a plain <img> tag)for non SVG-capable browsers.


Solution

  • I can recommend the SVG Primer (published by the W3C), which covers this topic: http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#SVG_in_HTML

    If you use <object> then you get raster fallback for free*:

    <object data="your.svg" type="image/svg+xml">
      <img src="yourfallback.jpg" />
    </object>
    

    *) Well, not quite for free, because some browsers download both resources, see Larry's suggestion below for how to get around that.

    2014 update:

    An additional good read is this blogpost on svg fallbacks.