Canvas API

基线 广泛可用

此功能已经很成熟,可以在许多设备和浏览器版本上运行。它自以下时间起在所有浏览器中可用: 2015 年 7 月.

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

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

基本示例

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

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 工作线程中可用。

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 绘制功能。
  • Paper.js 是一个运行在 HTML Canvas 之上的开源矢量图形脚本框架。
  • Phaser 是一个快速、免费且有趣的开源框架,用于基于 Canvas 和 WebGL 的浏览器游戏。
  • Pts.js 是一个用于在 canvas 和 SVG 中进行创意编码和可视化的库。
  • Rekapi 是 Canvas 的动画关键帧 API。
  • Scrawl-canvas 是一个用于创建和操作 2D canvas 元素的开源 JavaScript 库。
  • ZIM 框架为在画布上进行创意编码提供了便利、组件和控件——包括无障碍性和数百个彩色教程。
  • Sprig 是一个使用 Canvas 的易于上手的、开源的、基于平铺的游戏开发库。

注意:有关使用 WebGL 的 2D 和 3D 库,请参阅 WebGL API

规范

规范
HTML 标准
# the-canvas-element

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅