Let us dive straight in with a simple example. Take a look at the following code.
<svg version="1.1" baseProfile="full" width="300" height="200" xmlns="http://www.w3.org/2000/svg"> <rect width="100%" height="100%" fill="red" /> <circle cx="150" cy="100" r="80" fill="green" /> <text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text> </svg>
Copy the code and paste it in a file demo1.svg. Then open the file in Firefox. It will render as shown in the following screenshot. (Firefox users: click here)
The rendering process involves the following:
svg
root element: version
and baseProfile
attributes should always be used instead<rect/>
that covers the complete image area<circle/>
with a radius of 80px is drawn atop the center of the red rectangle (offset 30+120px inward, and 50+50px upward).application/xhtml+xml
, the SVG can be directly embedded in the XML source.object
element: <object data="image.svg" type="image/svg+xml" />
iframe
element can be used: <iframe src="image.svg"></iframe>
img
element can be used theoretically, too. However this technique doesn't work in Firefox before 4.0.SVG files come in two flavors. Normal SVG files are simple text files containing SVG markup. The recommended filename extension for these files is ".svg" (all lowercase).
Due to the potentially massive size SVG files can reach when used for some applications (e.g., geographical applications), the SVG specification also allows for gzip-compressed SVG files. The recommended filename extension for these files is ".svgz" (all lowercase). Unfortunately it is very problematic to get gzip-compressed SVG files to work reliably across all SVG capable user agents when served from Microsofts IIS server, and Firefox can not load gzip-compressed SVG from the local computer. Avoid gzip-compressed SVG except when you are publishing to a webserver that you know will serve it correctly (see below).
Now that you have an idea of how to create basic SVG files, the next stage is to upload them to a Webserver. There are some gotchas at this stage though. For normal SVG files, servers should send the HTTP headers:
Content-Type: image/svg+xml Vary: Accept-Encoding
For gzip-compressed SVG files, servers should send the HTTP headers:
Content-Type: image/svg+xml Content-Encoding: gzip Vary: Accept-Encoding
You can check that your server is sending the correct HTTP headers with your SVG files by using the Network Monitor panel or a site such as web-sniffer.net. Submit the URL of one of your SVG files and look at the HTTP response headers. If you find that your server is not sending the headers with the values given above, then you should contact your Web host. If you have problems convincing them to correctly configure their servers for SVG, there may be ways to do it yourself. See the server configuration page on the w3.org for a range of simple solutions.
Server misconfiguration is a very common reason for SVG failing to load, so make sure you check yours. If your server is not configured to send the correct headers with the SVG files it serves, then Firefox will most likely show the markup of the files as text or encoded garbage, or even ask the viewer to choose an application to open them.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Getting_Started