# HTML &lt;canvas&gt; 标签 ## 实例 如何通过 canvas 元素来显示一个红色的矩形: ``` <canvas id="myCanvas"></canvas> <script type="text/javascript"> var canvas=document.getElementById('myCanvas'); var ctx=canvas.getContext('2d'); ctx.fillStyle='#FF0000'; ctx.fillRect(0,0,80,100); </script> ``` ## 浏览器支持 | IE | Firefox | Chrome | Safari | Opera | | --- | --- | --- | --- | --- | Internet Explorer 9+, Firefox, Opera, Chrome 以及 Safari 支持 &lt;canvas&gt; 标签。 注释:Internet Explorer 8 以及更早的版本不支持 &lt;canvas&gt; 标签。 ## 定义和用法 &lt;canvas&gt; 标签定义图形,比如图表和其他图像。 &lt;canvas&gt; 标签只是图形容器,您必须使用脚本来绘制图形。 ## HTML 4.01 与 HTML 5 之间的差异 &lt;canvas&gt; 标签是 HTML 5 中的新标签。 ## 属性 new : HTML5 中的新属性。 | 属性 | 值 | 描述 | | --- | --- | --- | | [height](/tags/att_canvas_height.asp "HTML5 &lt;canvas&gt; height 属性") | _pixels_ | 设置 canvas 的高度。 | | [width](/tags/att_canvas_width.asp "HTML5 &lt;canvas&gt; width 属性") | _pixels_ | 设置 canvas 的宽度。 | ## 全局属性 &lt;canvas&gt; 标签支持 [HTML 中的全局属性](/tags/html_ref_standardattributes.asp)。 ## 事件属性 &lt;canvas&gt; 标签支持 [HTML 中的事件属性](/tags/html_ref_eventattributes.asp)。 ## &lt;canvas&gt; 的历史 这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。 &lt;canvas&gt; 标记由 Apple 在 Safari 1.3 Web 浏览器中引入。对 HTML 的这一根本扩展的原因在于,HTML 在 Safari 中的绘图能力也为 Mac OS X 桌面的 Dashboard 组件所使用,并且 Apple 希望有一种方式在 Dashboard 中支持脚本化的图形。 Firefox 1.5 和 Opera 9 都跟随了 Safari 的引领。这两个浏览器都支持 &lt;canvas&gt; 标记。 我们甚至可以在 IE 中使用 &lt;canvas&gt; 标记,并在 IE 的 VML 支持的基础上用开源的 JavaScript 代码(由 Google 发起)来构建兼容性的画布。 参见:[http://excanvas.sourceforge.net/](http://excanvas.sourceforge.net/ "ExplorerCanvas")。 &lt;canvas&gt; 的标准化的努力由一个 Web 浏览器厂商的非正式协会在推进,目前 &lt;canvas&gt; 已经成为 HTML 5 草案中一个正式的标签。 参见:[http://www.whatwg.org/specs/web-apps/current-work/](http://www.whatwg.org/specs/web-apps/current-work/ "HTML 5") ## &lt;canvas&gt; 标记和 SVG 以及 VML 之间的差异 &lt;canvas&gt; 标记和 SVG 以及 VML 之间的一个重要的不同是,&lt;canvas&gt; 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。 这两种方式在功能上是等同的,任何一种都可以用另一种来模拟。从表面上看,它们很不相同,可是,每一种都有强项和弱点。例如,SVG 绘图很容易编辑,只要从其描述中移除元素就行。 要从同一图形的一个 &lt;canvas&gt; 标记中移除元素,往往需要擦掉绘图重新绘制它。 ## 如何使用 &lt;canvas&gt; 标记绘图 大多数 Canvas 绘图 API 都没有定义在 &lt;canvas&gt; 元素本身上,而是定义在通过画布的 [getContext() 方法](/jsref/met_canvas_getcontext.asp "HTML DOM getContext() 方法")获得的一个“绘图环境”对象上。 Canvas API 也使用了路径的表示法。但是,路径由一系列的方法调用来定义,而不是描述为字母和数字的字符串,比如调用 beginPath() 和 arc() 方法。 一旦定义了路径,其他的方法,如 fill(),都是对此路径操作。绘图环境的各种属性,比如 fillStyle,说明了这些操作如何使用。 注释:Canvas API 非常紧凑的一个原因上它没有对绘制文本提供任何支持。要把文本加入到一个 &lt;canvas&gt; 图形,必须要么自己绘制它再用位图图像合并它,或者在 &lt;canvas&gt; 上方使用 CSS 定位来覆盖 HTML 文本。 ## 相关页面 HTML 教程:[HTML &lt;canvas&gt; 元素](/html5/html_5_canvas.asp "HTML 5 Canvas") HTML DOM 参考手册:[HTML DOM Canvas 对象](/jsref/dom_obj_canvas.asp "HTML DOM Canvas 对象")