水经验

183 阅读5分钟

1.基础使用

Document

1.1 viewBox

viewBox 属性定义了SVG中可以显示的区域

语法为:viewBox =" x y w h " x、y为起始点,w、h为显示区域的宽高

效果图为:

0

1.2 version

version 属性用于指明SVG版本,version 属性纯粹为一个声明,对渲染或处理没有任何影响。切目前只有1.0和1.1两个版本

1.3 xmlns 和 xmlns:xlink

xmlns用于声明命名空间(namespace),在此声明之下的所有子标签都属于这个空间内。这里看起来是一个url,但实际上仅仅是一个字符串,这样使用只是惯例。因此很多时候都会被称为”namespace url” 而不是”namespace name”。

当我们在SVG中加入xmlns时,因为它定义了默认命名空间,因此不需要前缀,我们直接在SVG标签中写一个a标签,a标签和UA就知道它是SVG的a标签而不是HTML的a标签

xmlns:xlink 表示前缀为xlink的标签和属性,应该由理解该规范的UA 使用xlink规范 来解释。

2. 基本图形

基本图形就是插入到SVG标签中的元素

2.1 圆形 circle

circle标签会绘制一个圆形

语法:

属性:cx、cy为园的坐标,r为圆的半径

示例:

2.2 矩形 rect

rect标签会绘制一个矩形

语法:

属性:x、y为矩形的起始点坐标,rx、ry为圆角 x、y轴方向的半径,width、height为矩形的宽高

示例:

2.3 椭圆形 ellipse

ellipse标签比circle标签功能更强大,ellipse 标签也可以绘制圆形,并且还可以分别缩放圆形的长轴半径和短轴半径,从而达到椭圆效果

语法:

属性:cx、cy为椭圆的坐标,rx为椭圆的x轴半径 ry为椭圆的y轴半径

示例:

2.4 线条line

line标签可以根据两点的坐标绘制一条直线

语法:

属性:x1、y1为起点坐标 ,x2、y2为终点坐标

示例:

2.5 折线 polyline

polyline标签可以把很多个点链接在一起成为一条折线。

语法:

属性:points为点集数列,其中每个点都必须包含2个数字,一个x坐标一个y坐标

示例:

2.6 多边形 polygon

polygon标签和polyline标签类似,都是由很多个点链接在一起的。但不同的是polygon路径中的最后一个点和第一个点是默认闭合的。

语法:

属性:points为点集数列,其中每个点都必须包含2个数字,一个x坐标一个y坐标

示例:

2.7 路径 path

path标签是所有图像中最复杂的,也是最强的。最常用的图像就是path,他可以绘制圆形、椭圆、矩形、线条、折线、多边形、贝塞尔曲线等

语法:

属性:d为一个点集数列以及其它绘制路径的信息

示例:

3. 命令

path 标签的图形形状是通过属性d定义的,属性d的值是以:命令 + 参数的形式进行组合,命令又是通过关键字表示

  1. M = Move to
  2. L = Line to
  3. H = Horizontal Line to
  4. V = Vertical Line to
  5. Q = Quadratic Bezier Curve to
  6. T =  Smooth Quadratic Bezier Curve to
  7. C =  Curve to
  8. S = Smooth Curve to
  9. A =  Elliptical Arc
  10. Z = close path

3.1直线命令

直线命令是通过两个点画他们的直线

注意:以下所有命令中大写为绝对定位小写为相对定位,后续的命令亦如此

3.1.1 M(Move to)
  • M命令是把画笔移动到某个点,就好像画笔提起来以后移动到一个新位置准备开始绘制。但因为仅仅是移动画笔而没有绘制,所以M命令经常出现在路径的起始点,用来指明画笔应该从何处开始绘制
  • 每一段路径都必须以M命令开头,如果有多个M命令则表示新路径开始
  • 语法: M x y 或者 m x y
  • 参数:x y 为坐标
3.1.2 L(Line to)
  • L命令会绘制一点并且和之前的点连成一条直线
  • 语法:L x y 或者 l x y
  • 参数:x、y为坐标
3.1.3 H (Horizontal Line to)
  • H命令可以从之前的点绘制一条水平的直线,H命令可以等价于y值和之前点相同的L命令
  • 语法:H x 或者 h x
  • 参数:x为X轴坐标
  • 示例:

3.1.4 V (Vertical Line to)
  • V命令可以从之前的点绘制垂直的直线,V命令可以等价于x值和之前点相同的L命令
  • 语法:V y 或者 V y
  • 参数:y为Y轴坐标
  • 示例:

3.1.5 Z(close path)

Z命令是一个闭合命令,他会从当前点画一条直线到路径的起始点

Z命令没有参数所以Z和z的效果一样 ,所以不区分大小写

  • 语法:Z 或者 z
  • 参数:无
  • 示例:

3.2 曲线命令

绘制曲线

3.2.1 Q(Quadratic Bezier Curve to)

Q命令可以用来绘制一条二次贝塞尔曲线,二次贝塞尔曲线需要一个控制点,用来确定起点和终点的曲线斜率

  • 语法:Q x1 y1,x y 或者 q x1 y1,x y
  • 参数:x 、y为终点位置,x1、y1为控制点
  • 示例:

3.2.2 T (Smooth Quadratic Bezier Curve to)

T命令是一个延长二次贝塞尔曲线的简化命令,T命令可以通过前一个控制点推断出后一个控制点,这也是为什么T命令只需要一个坐标的原因

需要注意的是T命令的前面必须有一个Q命令或者其他的T命令。如果T命令单独使用,那么控制点就会认为和终点是一个点,所以画出来的是一条直线

  • 语法:T x y或者 t x y
  • 参数:x 、y为终点位置
  • 示例: