由于在自己学习的过程中发现网上已经有许多很完善的教学文章,故这边不再多说,因为没有意义。这片文章只是在自己学习的过程中积累一点点内容,作为这些教学文章的补充,并不能作为学习资料。
学习参考文章
在学习时主要参考以下文章,对 SVG 没有了解的小伙伴,可以直接看这些文章:
自学补充
关于 viewBox 属性
该属性的用法就不再多说了,上面列举的文章都有提到。主要想补充以下两点:
- 你可以在
<svg>和<symbol>上使用该属性 - 主要作用是设置视窗,让我们可以只显示图像的部分内容
- 使用该属性是需要注意,它会帮我们等比例缩放
针对最后一点,SVG 阮一峰 的文章中有提到,大家也可以去 MDN 中看到相关内容,简单的说,viewBox 可能会帮我们把结果视窗等比例放大或缩小,以撑满所处的 HTML 元素。
举个例子,如果 <svg> 设定 width 和 higth 属性均为 100%,使用 viewBox 得到的图像会等比例放大,以填满视窗。
示例代码如下:
<!--显示一个圆的四分之一部分-->
<svg width="100%" height="100%" viewBox="50, 50, 50, 50">
<circle id="mycircle" cx="50" cy="50" r="50"></circle>
</svg>
结果如下:

关于自定义形状
目前我看完文章,了解到的可以用于自定义形状的方法如下:
<path>:我们可以使用该标签自己画<defs>+<g>/<symbol>:自定义形状,<defs>代码不会显示,仅供引用(一般是<use>标签使用)<defs>+<pattern>:自定义形状,用于填充,可以达到类似背景填充的效果
关于用 JavaScript 获取 SVG DOM
具体获取方式在 SVG 阮一峰 中有详细提及,主要需要注意的是:
<img>标签引入的 SVG 是没有办法获取到 SVG DOM 的<embed>根据 MDN 上的描述,大多数现代浏览器已经弃用并取消了对浏览器插件的支持,故尽量不要使用