How to use .svg files in a webpage?

ImageImage ManipulationSvgAdobe Illustrator

Image Problem Overview


I want to know how can one actually use a .svg file In a web page?

Image Solutions


Solution 1 - Image

See svgweb quickstart and the svgweb project homepage for something that works in all browsers including IE (requires flash plugin).

There are many ways to include an existing svg file:

  • <img src="your.svg"/>
  • <object data="your.svg"/>
  • <iframe src="your.svg"/>
  • <embed src="your.svg"/>
  • <div style="background:url(your.svg)">...</div>

Solution 2 - Image

If all you want to do is to place an SVG image such as a logo or static diagram, you just need to be careful to provide a fallback for older versions of Internet Explorer (i.e. versions 8 and earlier).

The best and simplest method I've found is to use a .png or .jpg for your fallback, placed using a normal img tag. You then wrap the img tag in an object tag, using the data attribute to place the SVG.

<object data="/path-to/your-svg-image.svg" type="image/svg+xml">
  <img src="/path-to/your-fallback-image.png" />
</object>

The img fallback is only loaded and used if the browser doesn't understand SVG.

Solution 3 - Image

I recommend putting the svg inline into your document (html5 technique). Just open your SVG file, copy the SVG tag and everything insideof it and then paste it into your html document.

<html>
    <body>
        <svg></svg>
    </body>
</html>

It has the advantage that this allows you to use css to style it, like changing the fill color or applying filters to it like blur. Another advantage is that you save one http request for fetching the svg file if it is inside of your document.

If you want for example to change its position using css, then you have to put the css inside of a style attribute. Styles that are in an external css file will not get applied in most browser as this is a security restriction. For example:

<svg id="mySVG" style="position: absolute; top: 200px; left: 200px;"></svg>

This technique is supported by all browsers except IE8 and below as well as the android 2.3 browser and below.

Read the chapter inline SVG for further details:

If you dont want to put it inline in your page then the best alternative seems to be the object tag and avoid using the embed tag.

Read this for further details about object vs embed vs img tag:

Solution 4 - Image

http://www.w3schools.com/svg/svg_inhtml.asp

The best example:

<embed src="rect.svg" width="300" height="100"
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" /> 

Solution 5 - Image

Caspar's approach is the proper one. However, I would move the fallback to the CSS, since you probably want to apply some styles to the svg file itself...

<object data="/path-to/your-svg-image.svg" type="image/svg+xml"  class="logo"> </object>

CSS

.no-svg .logo {
  width: 99px;
  height: 99px;
  background-image: url(/path-to/your-png-image.png);
}`

Solution 6 - Image

Raphaël—JavaScript Library. Nice javascript library that is using svg, and gives you a large range of effects!

Also supports most browsers, including IE

Solution 7 - Image

I'd like to agree with the answer from "code-zoop". Although this technically doesn't answer your question, it might also be a solution: enter the relevant data straight into the HTML. Either directly as an svg element, or by using Raphaël-JS.

From w3c-schools:

> SVG is all suported in In Firefox, Internet Explorer 9, Google Chrome, > Opera, and Safari you can

<html>
<body>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black"
  stroke-width="2" fill="red"/>
</svg>

</body>
</html>

(end of quote)

And to think even more outside the box, depending on how you want to use it, you can also put your 1-color graphics in a webfont. (see for example iconmoon.io )

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionParastarView Question on Stackoverflow
Solution 1 - ImageErik DahlströmView Answer on Stackoverflow
Solution 2 - ImageCasparView Answer on Stackoverflow
Solution 3 - ImagechriswebView Answer on Stackoverflow
Solution 4 - ImageBrian McKennaView Answer on Stackoverflow
Solution 5 - ImageJeromeView Answer on Stackoverflow
Solution 6 - Imagecode-zoopView Answer on Stackoverflow
Solution 7 - ImageIdeogramView Answer on Stackoverflow