Canvas API

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Canvas API 通过 JavaScriptHTML<canvas> 元素提供了一种绘图方法。除其他功能外,它还可以用于动画、游戏图形、数据可视化、照片处理和实时视频处理。

Canvas API 主要侧重于 2D 图形。同样使用 <canvas> 元素的 WebGL API 可以绘制硬件加速的 2D 和 3D 图形。

基本示例

这个简单的示例在 canvas 上绘制了一个绿色矩形。

HTML

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

JavaScript

Document.getElementById() 方法获取对 HTML <canvas> 元素的引用。接下来,HTMLCanvasElement.getContext() 方法获取该元素的上下文——用于渲染图形的对象。

实际绘图是使用 CanvasRenderingContext2D 接口完成的。fillStyle 属性将矩形填充为绿色。fillRect() 方法将其左上角放置在 (10, 10) 处,并将其尺寸设置为宽 150 像素,高 100 像素。

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

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

结果

参考

注意:WebGLRenderingContext 相关的接口在 WebGL 下引用。

注意: OffscreenCanvas 也可在 Web Workers 中使用。

CanvasCaptureMediaStreamTrack 是一个相关的接口。

指南和教程

Canvas 教程

一个全面的教程,涵盖 Canvas API 的基本用法及其高级功能。

HTML5 Canvas 深度解析

一本动手实践的、篇幅适中的 Canvas API 和 WebGL 入门书籍。

Canvas 手册

Canvas API 的便捷参考。

使用 canvas 操作视频

结合使用 <video><canvas> 实时处理视频数据。

Canvas API 功能强大,但并非总是易于使用。以下库可以使创建基于 canvas 的项目更快、更容易。

  • EaselJS 是一个开源 canvas 库,可以轻松创建游戏、生成艺术和其他高度图形化的体验。
  • Fabric.js 是一个具有 SVG 解析功能的开源 canvas 库。
  • heatmap.js 是一个用于创建基于 canvas 的数据热力图的开源库。
  • JavaScript InfoVis Toolkit 可创建交互式数据可视化。
  • Konva.js 是一个适用于桌面和移动应用的 2D canvas 库。
  • p5.js 具有一套完整的 canvas 绘图功能,适用于艺术家、设计师、教育工作者和初学者。
  • Phaser 是一个快速、免费且有趣的开源框架,用于支持 Canvas 和 WebGL 的浏览器游戏。
  • Pts.js 是一个用于在 canvas 和 SVG 中进行创意编码和可视化的库。
  • Rekapi 是一个用于 Canvas 的动画关键帧 API。
  • Scrawl-canvas 是一个用于创建和操作 2D canvas 元素的开源 JavaScript 库。
  • ZIM 框架在 canvas 上提供了便利、组件和控件,用于创意编码——包括可访问性和数百个色彩鲜艳的教程。
  • Sprig 是一个初学者友好、开源、基于瓦片的 Sprig 是一款对初学者友好的开源、基于瓦片的游戏开发库,它使用 Canvas。

注意: 请参阅 WebGL API 以了解使用 WebGL 的 2D 和 3D 库。

规范

规范
HTML
# the-canvas-element

浏览器兼容性

另见