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 组件可为任意形状添加调整大小和旋转控制柄
  • 多层渲染 — 每个 Layer 都是一个独立的 <canvas> 元素。交互式形状发生变化时,静态背景不会重新渲染
  • 序列化 — 使用 stage.toJSON() 保存节点树及其可序列化属性。使用 Konva.Node.create(json) 恢复它们。图像、事件处理器和自定义绘制函数需要单独恢复
  • 滤镜和效果 — 模糊、提亮、对比度、灰度、像素化等 — 可按形状应用
  • 高性能 — 可处理数千个形状。请参阅性能提示压力测试演示

你可以构建什么?

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

查看所有 60+ 演示 →

下一步

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