line
直线
circle
基本属性cx与circle表示的是圆心的坐标,r是半径
ellipse
椭圆
rect
画一个矩形或者一个长方形,还可以画圆角
x与y属性控制在指定svg宽高的范围内矩形左上角的位置
width与height控制矩形的长宽
rx控制水平方向圆角
ry控制垂直方向圆角
polygon
多边形是由直线组成,其形状是"封闭"的(所有的线条 连接起来)。
polygon来自希腊。 "Poly" 意味 "many" , "gon" 意味 "angle"。
fill-rule属性:
属性用于指定使用哪一种算法去判断画布上的某区域是否属于该图形“内部” (内部区域将被填充)。对一个简单的无交叉的路径,哪块区域是“内部” 是很直观清除的。但是,对一个复杂的路径,比如自相交或者一个子路径包围另一个子路径,“内部”的理解就不那么明确了。
fill-rule 属性提供两种选项用于指定如何判断图形的“内部”:
nonzero
字面意思是“非零”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点情况。从0开始计数,路径从左向右(顺时针)穿过射线则计数加1,从右向左(逆时针)穿过射线则计数减1。得出计数结果后,如果结果是0,则认为点在图形外部,否则认为在内部。下图演示了nonzero规则:
evenodd
字面意思是“奇偶”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部。下图演示了evenodd 规则:
Demo by Joni Trythall
Demo by Joni Trythall
下图中的箭头表示绘制路径的方向:
Demo by Joni Trythall
给定偶数规则的特定算法,与非零不同,相关内部形状的绘图方向无关紧要,因为我们只是在路径穿过线时计算路径
Demo by Joni Trythall
polyline
曲线
text
(x,y)用于指定文字起始位置。准确的说,x指定文字最左侧坐标位置,y指定文字baseline所处y轴位置。
fill的默认为black,stroke默认为none。如果设置了stroke,字的边缘会再“描一层边”。如果设置了stroke并将fill设为none,呈现为空心字。
默认
但svg提供了一种更简单直接的方法实现这些对齐方式。
text-anchor属性可以改变(x,y)作为起始坐标的定义。
text-anchor="start"时,(x,y)为
text-anchor="middle"时,(x,y)为
text-anchor="end"时,(x,y)为
如果要实现在一整段文字中,让部分文字呈现出不同的样式,只用
dx,dy)可以将
(x,y)是将
"shaken"一共六个字符,dx,dy,rotate分别各有六个数值,空格或逗号隔开,每个数值对相作用于应次序的字母。rotate可以对字符做旋转。
如果dx(或者dy,rotate)参数个数小于
超出
默认的,
利用startOffset和text-anchor,可以实现文字居中摆放。
path
M = moveto(M X,Y) :将画笔移动到指定的坐标位置
L = lineto(L X,Y) :画直线到指定的坐标位置
H = horizontal lineto(H X):画水平线到指定的X坐标位置
V = vertical lineto(V Y):画垂直线到指定的Y坐标位置
C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次贝赛曲线
S = smooth curveto(S X2,Y2,ENDX,ENDY):平滑曲率
Q = quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次贝赛曲线
T = smooth quadratic Belzier curveto(T ENDX,ENDY):映射
A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧线
Z = closepath():关闭路径
大写表示绝对定位,小写表示相对定位
dasharray 顾名思义就是线段的数组,他的参数可以是一个数组,单数值代表实线的长度,双数值代表虚线的长度
下面每个方格10px,总长200px
stroke-dasharray: 0;
此时stroke-dasharray不起作用,注:当他的参数<=0时该属性将失效
stroke-dasharray: 20;
实线的长度确实是20px,为什么会有虚线也是20呢,这里官方文档给出的解释是:If the list has an odd number of values, then it is repeated to yield an even number of values. 也就是说如果参数个数是单数是默认会复制一份参数
demo来自
stroke-dashoffset:相对于绘制的起点偏移的量,正值(向右或者顺时针偏移),负值(向左或者逆时针),必须配合stroke-dasharray使用