CANVAS是html5提供的新元素<canvas>,而svg存在的历史要比canvas久远,svg并非html5专有的标签,最初svg是用xml技术(超文本扩展语言,能够自定义标签或属性)描述二维图形的语言。在H5中看似canvas与svg很像,可是,他们有巨大的差异。javascript
CANVAShtml
SVGhtml5
比较java
Canvascanvas
SVG浏览器
从功能上来讲网络
CANVAS能够看作是一个画布。,其绘制出来的图形为标量图,所以,能够在canvas中引入jpg或png这类格式的图片,在实际开发中,大型的网络游戏都是用canvas画布作出来的,而且canvas的技术如今已经至关的成熟。另外,咱们喜欢用canvas来作一些统计用的图表,如柱状图曲线图或饼状图等。而svg,所绘制的图形为矢量图,因此其用法上受到了限制。由于只能绘制矢量图,因此svg中不能引入普通的图片,由于矢量图的不会失真的效果,在项目中咱们会用来作一些动态的小图标。可是因为其本质为矢量图,能够被无限放大而不会失真,因此就很适合来作地图。框架
从操做上来讲svg
咱们要让canvas里面的一个图片跟随鼠标事件:canvas.onmouseover=function(){}。而svg支持事件的绑定。另外canvas中咱们绘制图形一般是经过javascript来实现,svg更多的是经过标签来来实现,如在svg中绘制正矩形形就要用<rect>,这里咱们不能用属性style="width:XXX;height:XXX;"来定义。spa