技能一贯在演化,在网页中利用 SVG 的方法也层出不穷。每个期间都有对应的最优解。
以是我打算把我知道的 7种 SVG 的利用方法列举出来,防患未然~
如果你还知道其他方法,可以在评论区补充~

1. 在浏览器直接打开
<?xml version="1.0" ?><svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"> <title>雷猴</title> <circle cx="50" cy="50" r="50" fill="hotpink"></circle></svg>
xml 是浏览器能读取的格式,但如果希望 svg 能在浏览器中渲染出来,须要利用 xmlns 声明渲染规则。
以是必须利用 xmlns="http://www.w3.org/2000/svg"。
2. 内嵌到 HTML 中(推举⭐⭐⭐)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>svg demo</title></head><body> <div> <!-- 内嵌到 HTML 中 --> <svg width="100%" height="100%" version="1.1"> <circle cx="50" cy="50" r="50" fill="hotpink"></circle> </svg> </div></body></html>
可以看到上面的代码中,<svg> 标签并没有利用 xmlns="http://www.w3.org/2000/svg" 声明命名空间,这是由于 HTML 5 文档利用 <!DOCTYPE html> 标记,它许可跳过 SVG 命名空间声明,HTML 解析器会自动识别 SVG 元素和它的子元素,除了 <foreignObject> 元素的子元素。
在写本文时,将 SVG 内嵌到 HTML 中 的做法是最常见的,也是比较推举的办法之一。
做殊效时,这种利用办法也是比较轻松的。
3. CSS 背景图(推举⭐)
<style>.svg_bg_img { width: 100px; height: 100px; background: url('./case1.svg') no-repeat; background-size: 100px 100px;}</style><div class="svg_bg_img"></div>
SVG 也是一种图片格式,以是按理说是能当做背景图来利用的。
一试,果真可以~
4. 利用 img 标签引入(推举⭐)
<img src="./case1.svg" width="100" height="100">
既然 SVG 可以在 CSS 中当背景图利用,那也可以在 <img> 标签里利用咯~
5. 利用 iframe 标签引入(不推举❌)
<iframe src="./case1.svg" width="100" height="100"></iframe>
iframe 可以在网页里再嵌套一个网页,既然 SVG 可以直接在浏览器打开,那利用 <iframe> 引用 SVG 同样也是可以的。
须要把稳的是,<iframe> 默认是有个边框样式的,如果你利用这种办法引入 SVG 可能还须要自己手动调节一下样式。
6. 利用 embed 标签引入(不推举❌)
<embed src="./case1.svg" width="100" height="100"/>
<embed> 标签定义了一个容器,用来嵌入外部运用或者互动程序。它也可以插入各种媒体资源。
<embed> 标签已经被标准采取了。但它不能包含任何子内容,因此如果嵌入失落败就没有备用选项了。以是现阶段来看,我不太推举利用 embed 的办法引入 SVG 。
7. 利用 object 标签引入(不推举❌)
<object data="./case1.svg" type="image/svg+xml" codebase="http://www.adobe.com/svg/viewer/install"></object>
<object> 是通过 data 属性引入资源的。它可以用于嵌入图像,类似 <img> ,也可以用于嵌入独立的 HTML 文档,类似 <iframe> 。
利用 <object> 嵌入 SVG 可以让那些不能直接显示 SVG 但又有 SVG 插件的老旧浏览器展示 SVG。
须要把稳的是,在某些当代浏览器中,type 和 codebase 是可以不写的。
type 用来声明当前引入的资源是属于什么类型。
总结
在写本时,我推举利用 内嵌到 HTML 的办法来做日常开拓。
其他办法按照你实际需求去利用即可。
末了的 embed 和 object 这两种办法可以当做备用方案去利用。
代码仓库
⭐雷猴 SVG
推举阅读
《Canvas 从入门到劝朋友放弃(图解版)》
《Fabric.js 从入门到膨胀》
《『Three.js』起飞!
》
《console.log也能插图!
!
!
》
《纯css实现117个Loading效果》
《视差殊效的事理和实现方法》
《这18个网站能让你的页面背景炫酷起来》