SVG可以作为一个独立的文件存在。但更多的时候,我们希望他能集成在某个更大的文档中,比如HTML。
将SVG插入到HTML中主要有以下3种方式:
将SVG文件作为图片
将SVG作为应用程序
混合文档
将SVG文件作为图片
<img>
tag
SVG本身作为一种图像格式,和其他图像一样通过指定<img>
tag的src属性即可。并且可以通过css指定图像的尺寸和位置。
对于SVG图像来说,如果不指定图像(<img>
)的尺寸,会按照以下情况进行显示:
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文件也可以作为<object>
元素的data属性引入HTML中。
注意,MIME type必须是image/svg+xml
。
<object data="image.svg" type="image/svg+xml">
...
</object>
作为应用程序对象引入的SVG文件尺寸和作为<img>
引入时类似,并且不会继承定义在父文档中的任何样式。
但是,与<img>
不同的是,此方式可是包含外部文件,且脚本可以在object和父文档之间进行通信。
混合文档
可以直接将<svg>
嵌入到XHTML或者HTML5文档中。
嵌入到XHTML需要为<svg>
指定命名空间(xmlns),嵌入到HTML5则可以省略,解析器会自动识别<svg>
tag。
<!DOCTYPE html>
<html>
<body>
<svg>
...
</svg>
</body>
</html>
直接嵌入的SVG会继承父文档的样式,默认情况下采用inline的方式进行显示。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。