svg标签的dom怎么获取_SVG 入门教程

一、简介

SVG在MDN上的定义为:

可缩放矢量图形(Scalable Vector Graphics,SVG),是一种用来描述二维矢量图形的 XML 标记语言。 简单地说,SVG 面向图形,HTML 面向文本。

可以理解为,SVG是用来在HTML中制作图形的,并且用它作的图是基于图形的形状,不会因为放大和缩小而变形,表现上和HTML中的文本一样。

同时,svg也是一种文件格式,以后缀名 .svg 结尾,本质上是一种文本文件。

引用svg的方式:

1. svg可以直接插到html当中,浏览器能够直接解析

72296872aaf29686528a0c0e657ac005.png

2. css引入svg文件

8bf80a556729730c002e06281bebd4bd.png

3. 转码为BASE64的格式引用

3e1c049824e56f94cd868776b08ee3c8.png

二、语法

1. 标签

    SVG中的所有标签都要放到顶层标签之中,

fe39c454b4caec27ced10825754f5e3d.png

svg中的width与height属性是用来指定svg在html文档中的大小,默认为width:300px, height:150px。

viewBox属性是用来指定图像在svg标签中显示的部分。参数按顺序为 minX,minY,width,height。minX,minY为viewBox左上角的坐标位置,width和height为viewBox的大小。

preserveAspectRatio是当viewBox与svg元素的宽高比不同时图像的适应方式,作为入门可以先不深入了解。

2. 标签

标签代表圆形。

a40e4fdb74db8b7ddbdebcd0d722e2db.png

cx与cy为圆中心的位置,r为圆的半径。

3. 标签

标签代表线段

feefc019b8d1dbe57aba87ac9d7f39ef.png

x1,y1表示线段的起点,x2,y2表示线段的终点,style属性中的stroke表示线段颜色,stroke-width表示线段的宽度。

4. 标签

标签表示矩形。

d4738e2a0ee67c873eaefcbba0d50505.png

x,y表示矩形左上角的位置,width和height表示矩形的宽和高。

5. 标签

标签非常的灵活,是用来定义形状的通用元素。所有的基本形状都可以用path元素来创建。

9325903b765c43076ad82d2296e1617c.png

d属性是path中很重要的属性,用来控制画笔的动作,其中 M 100 100 表示将画笔移动到绝对坐标为(100,100)的位置,L 300 100表示将从上一点(100,100)画一条线到(300,100)的位置,最后的z表示从当前点到第一个点简单画一条直线。

fill表示路径闭合区域的颜色,stroke和stroke-width分别表示画笔线条的颜色和宽度。

6. 标签

标签 表示一个由文字组成的图形。

5d145fa89146dddd483390f4455e5355.png

x,y表示文字的位置,font-family和font-size表示文字的字体和大小,中间的内容是要显示的文字。

7.  标签

标签在SVG文档内取得目标节点,并在别的地方复制它们。

aaef530b39ca17a8648928ca96b9f7d7.png

8.  标签

标签是用来组合对象的容器。

bd12457e8972d402ff1b1926083c7348.png

添加到g元素上的变换会应用到其所有的子元素上。添加到g元素的属性会被其所有的子元素继承。此外,g元素也可以用来定义复杂的对象,之后可以通过元素来引用它们。

9.  标签

标签用于定义一组复杂的图形元素。

de5e1994808758862001a3aafc00b1a5.png

建议把所有需要再次使用的引用元素定义在defs元素里面。这样做可以增加SVG内容的易读性和可访问性。 在defs元素中定义的图形元素不会直接呈现。 你可以在你的视口的任意地方利用 元素呈现这些元素。

10. 标签

标签让预定义图形能够以固定间隔在x轴和y轴上重复(或平铺)从而覆盖要涂色的区域。

6f2a088c2944b9442629ec2fefea90cb.png

使用预定义的图形对一个对象进行填充或描边,就要用到pattern元素。先使用pattern元素定义图案,然后在给定的图形元素上用属性fill或属性stroke引用用来填充或描边的图案。

11. 标签

标签用于引用图片。

94f59941a47c19cd8ea9fe665ade7a89.png

x,y用于表示图片的位置;width,height用于表示图片的大小。xlink:href表示引用图片的路径。

12. 标签

标签用于定义元素的动画。

c8203f82aa02a72629d69afd07feef6c.png

动画元素放在形状元素的内部,用来定义一个元素的某个属性如何踩着时点改变。在指定持续时间里,属性从开始值变成结束值。

三、js交互

1. DOM操作

2e91e52a3915bb5d4dcd4d1fd1ae61cb.png

388ff5d1f96fe829ee56417e4ad05952.png

点击圆形后会改变圆的大小。

2. 读取源码

由于 SVG 文件就是一段 XML 文本,因此可以通过读取 XML 代码的方式,读取 SVG 源码。

61b1fa03661700a1fce9dcb4e867aaef.png

使用XMLSerializer实例的serializeToString()方法,获取 SVG 元素的代码。

四、应用

下面实现一个简单的画笔应用:

afcbaff6a422eeca362b56496e95a681.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值