--- title: Canvas slug: Web/API/Canvas_API tags: - API - Canvas - JavaScript - WebGL translation_of: Web/API/Canvas_API ---
{{CanvasSidebar}}

Canvas API 提供了一个通过JavaScript 和 HTML的{{HtmlElement("canvas")}}元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。

Canvas API主要聚焦于2D图形。而同样使用<canvas>元素的 WebGL API 则用于绘制硬件加速的2D和3D图形。

基础示例

这个简单的例子在画布绘制一个绿色的长方形。

HTML

<canvas id="canvas"></canvas>

JavaScript

{{domxref("Document.getElementById()")}} 方法获取HTML <canvas> 元素的引用。接着,{{domxref("HTMLCanvasElement.getContext()")}} 方法获取这个元素的context——图像稍后将在此被渲染。

由 {{domxref("CanvasRenderingContext2D")}} 接口完成实际的绘制。{{domxref("CanvasRenderingContext2D.fillStyle", "fillStyle")}} 属性让长方形变成绿色。{{domxref("CanvasRenderingContext2D.fillRect()", "fillRect()")}} 方法将它的左上角放在(10, 10),把它的大小设置成宽150高100。.

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 150, 100);

结果

{{ EmbedLiveSample('基础示例', 700, 180) }}

参考

备注:WebGLRenderingContext 有关的接口请参考 WebGL

{{domxref("CanvasCaptureMediaStream")}} 也与之相关。

教程与指导

Canvas 教程
一个综合性教程,包括了<canvas>的基本用法与高级功能。
代码片段: Canvas
一些面向开发者的 <canvas> 代码片段。
深入HTML5 Canvas
一个手把手的、长度与书本相若的Canvas API和WebGL介绍。
Demo:一个基础的光线追踪器
运用canvas制作的光线追踪动画示例。
使用canvas绘制视频 
结合{{HTMLElement("video")}}和 {{HTMLElement("canvas")}}来实现实时操作视频数据。

Canvas API是非常强大的,但不总是很容易使用。以下列出的库能够使创建基于canvas的项目更快和更简单。

备注: 与WebGL有关的2D和3D的库请参考 WebGL

标准

标准 状态 备注
{{SpecName('HTML WHATWG', '#2dcontext', 'the 2D rendering context')}} {{Spec2('HTML WHATWG')}}

浏览器兼容性

Mozilla 程序从 Gecko 1.8 (Firefox 1.5) 开始支持 <canvas>。它首先是由 Apple 引入的,用于 OS X Dashboard 和 Safari。Internet Explorer 从IE9开始支持<canvas> ,更旧版本的IE中,页面可以通过引入 Google 的 Explorer Canvas 项目中的脚本来获得<canvas>支持。Google Chrome和Opera 9+ 也支持 <canvas>

其它相关