SVG可以作为一个独立的文件存在。但更多的时候,我们希望他能集成在某个更大的文档中,比如HTML。
将SVG插入到HTML中主要有以下3种方式:
将SVG文件作为图片
将SVG作为应用程序
混合文档
将SVG文件作为图片
tag
SVG本身作为一种图像格式,和其他图像一样通过指定tag的src属性即可。并且可以通过css指定图像的尺寸和位置。
对于SVG图像来说,如果不指定图像()的尺寸,会按照以下情况进行显示:
SVG本身指定了明确的height和width,则他们作为图像的尺寸进行显示
SVG本身只指定了height或者width中的一个,如果SVG带有viewBox属性,则会根据viewBox计算宽高比,缩放后进行显示
SVG本身没有指定height或者width,如果SVG带有viewBox属性,则viewBox的height和width将被作为图像的尺寸进行显示
如果SVG既没有指定height或width,且没有viewBox,则浏览器采用默认尺寸进行显示
css属性
和普通图片一样,SVG也可以作为background-image的属性的值进行显示。
background-image: url("image.svg");
不足
SVG作为图像引用时,
大多数浏览器不会加载SVG自身引用的文件(其他图像,外部脚本,字体文件等)
依据浏览器的安全策略,SVG中定义的脚本也可能不会执行
将SVG作为应用程序
SVG文件也可以作为元素的data属性引入HTML中。
注意,MIME type必须是image/svg+xml。
...
作为应用程序对象引入的SVG文件尺寸和作为引入时类似,并且不会继承定义在父文档中的任何样式。
但是,与不同的是,此方式可是包含外部文件,且脚本可以在object和父文档之间进行通信。
混合文档
可以直接将嵌入到XHTML或者HTML5文档中。
嵌入到XHTML需要为指定命名空间(xmlns),嵌入到HTML5则可以省略,解析器会自动识别tag。
...
直接嵌入的SVG会继承父文档的样式,默认情况下采用inline的方式进行显示。