HTML5 SVG HTML5 Canvas HTML5多媒体 什么SVG? SVG 支持可伸缩矢量图形 SVG 用于定义web图形 SVG 是W3C的推荐标准 HTML <svg> 元素 HTML <svg> 元素是一个SVG图形容器。 SVG 提供了几种方法,来绘制路径、框、圆、文本和图像。 浏览器支持 表中的数字指定第一个浏览器的版本,全面支持<svg>SVG元素。 元素 <svg> 4.0 9.0 3.0 3.2 10.1 SVG 圆 <!DOCTYPE html> <html> <body> <svg width="100" height="100"> <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> </svg> </body> </html> 让我试试 SVG 矩形 <svg width="400" height="100"> <rect width="400" height="100" style="fill:rgb(0,0,255);stroke-width:10;stroke:rgb(0,0,0)" /> </svg> 让我试试 SVG 圆角矩形 你的浏览器不支持SVG. <svg width="400" height="180"> <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke:black;stroke-width:5;opacity:0.5" /> </svg> 让我试试 SVG 星型 你的浏览器不支持SVG. <svg width="300" height="200"> <polygon points="100,10 40,198 190,78 10,78 160,198" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" /> </svg> 让我试试 SVG Logo SVG 你的浏览器不支持SVG. <svg height="130" width="500"> <defs> <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" /> <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" /> </linearGradient> </defs> <ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" /> <text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">SVG</text> 你的浏览器不支持SVG. </svg> 让我试试 SVG和Canvas之间的差异 SVG 是一种使用XML描述二维图形的语言. Canvas 使用JavaScript在web页面上绘制二维图形. SVG是基于XML的,这意味着每一个元素在SVG DOM里面是可用的。你可以将JavaScript事件处理程序附着到元素。 在SVG,每画形状记忆为对象。如果一个SVG的对象属性的改变,浏览器可以自动重新绘制形状 画布按像素渲染像素。在画布中,一旦图形被绘制,它被浏览器遗忘。如果它的位置应该改变,整个场景需要被重画,包括可能被任何图形包含的对象. Canvas 和 SVG的比较 下表显示Canvas和SVG之间的一些重要差异: Canvas SVG 分辨率的依赖性 不支持事件处理程序 文本渲染能力差 你可以保存图像为JPG或者PNG。 非常适合图形密集型游戏 不依赖分辨率 支持事件处理程序 最适合大渲染区域的应用(谷歌地图) 如果复杂的渲染速度慢(任何使用DOM会慢很多) 不适合游戏应用 HTML5 Canvas HTML5多媒体