Skip to main content

开始使用 Konva — HTML5 Canvas 2D 框架

什么是 Konva?

Konva 是一个用于构建交互式 2D 图形的 HTML5 Canvas JavaScript 框架。它在 canvas 之上提供了对象模型 — 你创建形状、分组、添加事件监听器、拖动它们、动画化它们,框架负责渲染、命中检测和状态管理。

Konva 适用于桌面和移动端,支持数千个形状的高性能渲染,并且拥有 ReactVueSvelteAngular 的官方集成。

快速示例

// 创建一个舞台(所有层的容器)
const stage = new Konva.Stage({
container: 'container',
width: 500,
height: 400,
});

// 创建一个层
const layer = new Konva.Layer();
stage.add(layer);

// 创建一个可拖动的矩形
const rect = new Konva.Rect({
x: 50,
y: 50,
width: 100,
height: 80,
fill: 'cornflowerblue',
shadowBlur: 5,
cornerRadius: 4,
draggable: true,
});
layer.add(rect);

// 添加事件监听器
rect.on('click tap', () => {
rect.fill(Konva.Util.getRandomColor());
});

就是这样 — 一个点击后改变颜色的可拖动矩形。没有样板代码,没有渲染循环。

安装 Konva

如果您使用的是包管理器:

npm install konva

或者直接使用脚本标签:

<script src="https://unpkg.com/konva@10/konva.min.js"></script>

或者从 CDN 下载:

在你的框架中使用 Konva

Konva 拥有所有主流框架的官方绑定:

框架安装
Reactreact-konvanpm install react-konva konva
Vuevue-konvanpm install vue-konva konva
Sveltesvelte-konvanpm install svelte-konva konva
Angularng2-konvanpm install ng2-konva konva

开始使用你的框架:React · Vue · Svelte · Angular

为什么选择 Konva?

  • 形状即对象 — 创建矩形、圆形、线条、文本、图像、路径等。每个形状都是一个你可以独立操作的 JavaScript 对象。
  • 完整的事件系统clickdblclickmouseovermouseouttouchstartdragstartdragend 等。事件像 DOM 一样从形状冒泡到组和层。
  • 拖放 — 在任何形状上设置 draggable: true。添加拖动边界、吸附和掉落事件。
  • 调整大小和旋转 — 内置的 Transformer 组件为任何形状添加调整大小和旋转的控制柄。
  • 多层渲染 — 每个层是一个独立的 <canvas> 元素。当交互式形状改变时,静态背景不会重新渲染。
  • 序列化 — 使用 stage.toJSON() 保存整个 canvas 状态。使用 Konva.Node.create(json) 恢复它。
  • 滤镜和效果 — 模糊、增亮、对比度、灰度、像素化等 — 按形状应用。
  • 高性能 — 处理数千个形状。查看 性能提示压力测试演示

你可以构建什么?

开发者使用 Konva 构建设计编辑器、绘图应用、注释工具、交互式地图、数据可视化等。以下是一些示例:

查看所有 60+ 演示 →

下一步

  • Konva 概述 — 理解架构(Stage → Layer → Shape)
  • 形状 — 了解所有可用的形状
  • 事件 — 处理点击、悬停、触摸等
  • 拖放 — 使形状可拖动
  • 动画 — 动画化形状属性
  • 关于 Konva — 谁在使用 Konva,关键事实和链接