HTML 5 <canvas> 标签

w3school 在线教程

## HTML5 教程

- HTML5 教程
- HTML5 简介
- HTML5 视频
- HTML5 视频/DOM
- HTML5 音频
- HTML5 拖放
- HTML5 画布
- HTML5 SVG
- HTML5 画布 vs SVG
- HTML5 地理定位
- HTML5 Web 存储
- HTML5 应用缓存
- HTML5 Web Workers
- HTML5 服务器发送事件

## HTML5 表单

- HTML5 输入类型
- HTML5 表单元素
- HTML5 表单属性

## HTML5 测验

- HTML5 测验

## HTML5 参考手册

- HTML5 标签
- HTML5 属性
- HTML5 事件
- HTML5 视频/音频
- HTML5 画布
- HTML 有效 DTD

# HTML 5 <canvas> 标签

## 定义和用法

<canvas> 标签定义图形，比如图表和其他图像。

<canvas> 标签只是图形容器，您必须使用脚本来绘制图形。

## 实例

如何通过 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>

亲自试一试

## HTML 4.01 与 HTML 5 之间的差异

<canvas> 标签是 HTML 5 中的新标签。

## 属性

new : HTML5 中的新属性。

属性 | 值 | 描述
--- | --- | ---
height | pixels | 设置 canvas 的高度。
width | pixels | 设置 canvas 的宽度。

## 全局属性

<canvas> 标签支持 HTML 5 中的全局属性。

## 事件属性

<canvas> 标签支持 HTML 5 中的事件属性。

## <canvas> 的历史

这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为，但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。

<canvas> 标记由 Apple 在 Safari 1.3 Web 浏览器中引入。对 HTML 的这一根本扩展的原因在于，HTML 在 Safari 中的绘图能力也为 Mac OS X 桌面的 Dashboard 组件所使用，并且 Apple 希望有一种方式在 Dashboard 中支持脚本化的图形。

Firefox 1.5 和 Opera 9 都跟随了 Safari 的引领。这两个浏览器都支持 <canvas> 标记。

我们甚至可以在 IE 中使用 <canvas> 标记，并在 IE 的 VML 支持的基础上用开源的 JavaScript 代码（由 Google 发起）来构建兼容性的画布。 参见：http://excanvas.sourceforge.net/。

<canvas> 的标准化的努力由一个 Web 浏览器厂商的非正式协会在推进，目前 <canvas> 已经成为 HTML 5 草案中一个正式的标签。 参见：http://www.whatwg.org/specs/web-apps/current-work/

## <canvas> 标记和 SVG 以及 VML 之间的差异

<canvas> 标记和 SVG 以及 VML 之间的一个重要的不同是，<canvas> 有一个基于 JavaScript 的绘图 API，而 SVG 和 VML 使用一个 XML 文档来描述绘图。

这两种方式在功能上是等同的，任何一种都可以用另一种来模拟。从表面上看，它们很不相同，可是，每一种都有强项和弱点。例如，SVG 绘图很容易编辑，只要从其描述中移除元素就行。

要从同一图形的一个 <canvas> 标记中移除元素，往往需要擦掉绘图重新绘制它。

## 如何使用 <canvas> 标记绘图

大多数 Canvas 绘图 API 都没有定义在 <canvas> 元素本身上，而是定义在通过画布的 getContext() 方法获得的一个“绘图环境”对象上。

Canvas API 也使用了路径的表示法。但是，路径由一系列的方法调用来定义，而不是描述为字母和数字的字符串，比如调用 beginPath() 和 arc() 方法。

一旦定义了路径，其他的方法，如 fill()，都是对此路径操作。绘图环境的各种属性，比如 fillStyle，说明了这些操作如何使用。

注释：Canvas API 非常紧凑的一个原因上它没有对绘制文本提供任何支持。要把文本加入到一个 <canvas> 图形，必须要么自己绘制它再用位图图像合并它，或者在 <canvas> 上方使用 CSS 定位来覆盖 HTML 文本。

## 参阅

HTML DOM Canvas 对象