前端SVG技术

文档:

http://www.w3school.com.cn/svg/svg_path.asp

http://www.runoob.com/svg/svg-path.html

SVG 标签

<rect> 标签可用来创建矩形,以及矩形的变种。

  1. <?xml version="1.0" standalone="no"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  3. "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  4. <svg width="100%" height="100%" version="1.1"
  5. xmlns="http://www.w3.org/2000/svg">
  6. <rect width="300" height="100"
  7. style="fill:rgb(0,0,255);stroke-width:1;
  8. stroke:rgb(0,0,0)"/>
  9. </svg>

查看例子(仅用于支持 SVG 的浏览器)

代码解释:

rect 元素的 width 和 height 属性: 可定义矩形的高度和宽度

style 属性: 用来定义 CSS 属性

CSS 的 fill 属性: 定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)

CSS 的 stroke-width 属性: 定义矩形边框的宽度

CSS 的 stroke 属性: 定义矩形边框的颜色

查看此例

创建带有圆角的矩形:

  1. <?xml version="1.0" standalone="no"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  3. "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  4. <svg width="100%" height="100%" version="1.1"
  5. xmlns="http://www.w3.org/2000/svg">
  6. <rect x="20" y="20" rx="20" ry="20" width="250"
  7. height="100" style="fill:red;stroke:black;
  8. stroke-width:5;opacity:0.5"/>
  9. </svg>

代码解释:

rx 和 ry 属性可使矩形产生圆角。

查看此例

SVG <path> 标签用来定义路径。

下面的命令可用于路径数据:

  • M = moveto
  • L = lineto
  • H = horizontal lineto(水平)
  • V = vertical lineto
  • C = curveto(曲线)
  • S = smooth curveto(光滑)
  • Q = quadratic Belzier curve(二次belzier曲线)
  • T = smooth quadratic Belzier curveto
  • A = elliptical Arc
  • Z = closepath

例子

  1. <?xml version="1.0" standalone="no"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  3. "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  4. <svg width="100%" height="100%" version="1.1"
  5. xmlns="http://www.w3.org/2000/svg">
  6. <path d="M250 150 L150 350 L350 350 Z" />
  7. </svg>

上面的例子定义了一条路径,它开始于位置 250 150,到达位置 150 350,然后从那里开始到 350 350,最后在 250 150 关闭路径。

前端SVG技术 - 图1

查看例子

下面的例子创建了一个螺旋:

  1. <?xml version="1.0" standalone="no"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  3. "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  4. <svg width="100%" height="100%" version="1.1"
  5. xmlns="http://www.w3.org/2000/svg">
  6. <path d="M153 334
  7. C153 334 151 334 151 334
  8. C151 339 153 344 156 344
  9. C164 344 171 339 171 334
  10. C171 322 164 314 156 314
  11. C142 314 131 322 131 334
  12. C131 350 142 364 156 364
  13. C175 364 191 350 191 334
  14. C191 311 175 294 156 294
  15. C131 294 111 311 111 334
  16. C111 361 131 384 156 384
  17. C186 384 211 361 211 334
  18. C211 300 186 274 156 274"
  19. style="fill:white;stroke:red;stroke-width:2"/>
  20. </svg>

查看例子

测试工具

http://www.runoob.com/try/try.php?filename=trysvg_path2

SVG贝塞尔曲线

前端SVG技术 - 图2

一般而言,“三次贝塞尔曲线”的指令是:

  1. C x1 y1, x2 y2, x y

前端SVG技术 - 图3

我们可以看到,上面图片有4个点出现,曲线的两个端点,以及两个控制点,这就是典型的三次贝塞尔曲线。

记住,两个控制点写在前面,后面是一个实点。

明明图片上有4个点啊,你这里的C指令怎么就只有3个参数啊?

其中有一个点是起始点,一般是使用指令Mx, y的,这样1+3就等于4啦~」