跳到主要内容

教程目录

本站教程按主题组织,彼此独立,可以从任一主题进入。若你是第一次接触 Konva, 建议先读开始了解舞台(Stage)、图层(Layer)与图形(Shape)的层次关系, 再按下面的顺序推进。

基础​

  • 图形:矩形、圆形、路径、文本等内置图形,以及自定义图形
  • 样式:填充、描边、阴影、透明度与混合模式
  • 事件:绑定、委托、移动端事件与自定义命中区域
  • 选择器:按 id、name 与类型查找节点

交互与视觉​

  • 选择与变换:Transformer 控制柄、缩放限制、旋转吸附与变换事件
  • 拖拽:拖拽图形、分组与舞台,以及拖拽边界
  • 裁剪:矩形裁剪区域与自定义裁剪函数
  • 滤镜:模糊、亮度、灰度、反色等内置滤镜与滤镜叠加
  • 分组与图层:节点分组、图层管理与层级调整

动画与数据​

进阶​

  • 性能优化:缓存、批量绘制、命中图与内存泄漏规避

原创专题​

以下章节官方文档没有,是本站针对中文开发者补写的:

常见问题​

该从哪一章开始读?​

完全没接触过 Konva,先读开始,它讲清楚舞台、图层、图形 这三层结构——这是理解后面所有内容的基础。

之后按「图形 → 样式 → 事件」的顺序走,就能做出可交互的画面了。 其余章节都是按需查阅的,不必顺序通读。

只想实现某个具体效果,该查哪里?​

按问题的性质定位:

本站和官方英文文档是什么关系?​

本站是 Konva 官方文档的中文翻译,并在此基础上补充了原创内容—— 每一页的「常见问题」与末尾的小节都是中文读者实际会遇到的问题, 官方文档里没有。

API 的权威来源始终是 官方 API 参考。 本站内容如与官方冲突,以官方为准,也欢迎到 本站仓库提 Issue。

与其他方案的取舍​

Konva 不是所有 Canvas 场景的正确选择。几个常见的替代方案与它的分界线:

原生 Canvas API。如果你要画的只是几个静态图形、或者一张图表, 没有交互需求,直接用原生 API 更轻——不用引入一个几百 KB 的库。 Konva 的价值在于它把「图形」变成了可以持有状态、响应事件、独立变换的对象, 没有这些需求时它就是纯粹的负担。

SVG。需要图形随页面缩放保持清晰、需要用 CSS 控制样式、 或者图形数量不多但要求可访问性(屏幕阅读器)时,SVG 更合适。 Canvas 的优势在于图形数量多时的性能——上千个元素时 SVG 的 DOM 开销 会让页面明显变慢,而 Canvas 只是多画几笔。

Fabric.js。定位与 Konva 最接近,同样是带交互的 Canvas 场景图。 它内置了更完整的图形编辑能力(自由绘制、滤镜、SVG 导入导出), 适合直接做设计工具;Konva 更轻、API 更一致,适合把画布嵌进自己的产品里。

PixiJS。基于 WebGL,渲染性能远高于 Canvas 2D,适合游戏、粒子、 需要着色器的视觉效果。代价是文本渲染与 DOM 集成不如 Konva 自然, 而且 WebGL 上下文丢失需要自己处理。

一句话区分:做图表和静态图形用原生或 SVG,做可交互的画布应用用 Konva, 做完整的设计工具考虑 Fabric,做游戏和高性能视觉用 Pixi。

这一节只给结论。完整的对比维度、各方案的性能拐点与可直接套用的决策路径, 见为什么选择 Konva与 Canvas 库怎么选。