SVG 自学补充

208 阅读2分钟

由于在自己学习的过程中发现网上已经有许多很完善的教学文章,故这边不再多说,因为没有意义。这片文章只是在自己学习的过程中积累一点点内容,作为这些教学文章的补充,并不能作为学习资料。

学习参考文章

在学习时主要参考以下文章,对 SVG 没有了解的小伙伴,可以直接看这些文章:

自学补充

关于 viewBox 属性

该属性的用法就不再多说了,上面列举的文章都有提到。主要想补充以下两点:

  • 你可以在 <svg><symbol> 上使用该属性
  • 主要作用是设置视窗,让我们可以只显示图像的部分内容
  • 使用该属性是需要注意,它会帮我们等比例缩放

针对最后一点,SVG 阮一峰 的文章中有提到,大家也可以去 MDN 中看到相关内容,简单的说,viewBox 可能会帮我们把结果视窗等比例放大或缩小,以撑满所处的 HTML 元素。

举个例子,如果 <svg> 设定 widthhigth 属性均为 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 上的描述,大多数现代浏览器已经弃用并取消了对浏览器插件的支持,故尽量不要使用