一、入门阶段(零基础,3~5天)
目标:告别原生Canvas繁琐编码,理解Fabric面向对象思想
- 掘金文章:https://juejin.cn/post/7026941253845516324
- 环境搭建、画布初始化、基础图形(矩形/圆形/线条/文本)创建
- 对象基础属性:颜色、大小、位置、缩放、旋转
- 中文官方简介文档:https://fabricjs.cc/docs/getting-started/fabric-intro-part-1/#%E5%AF%B9%E8%B1%A1
- 弄懂:画布(Canvas)、对象(Object)、图像(Image)、路径(Path)、分组(Group)核心概念
- 区分原生canvas与Fabric设计差异
二、进阶实战阶段(7~10天,核心开发能力)
配套源码:Gitee Demo仓库 https://gitee.com/k21vin/fabricjs-demo
公众号专栏:https://mp.weixin.qq.com/mp/homepage?__biz=MzAwMjU3ODU5Ng==&hid=21
1)基础进阶
- 图片导入、滤镜、渐变填充(线性/径向渐变)
- 分组操作:组合、拆分、修改组内单个元素(仓库自带案例)
- 自由手绘、橡皮擦功能实现
2)交互能力(重点)
- 选中、多选、拖拽、边框缩放限制
- 右键自定义菜单、画布平移/缩放
- 元素锁定、隐藏、层级调整
3)数据持久化
- JSON序列化(toJSON)、反序列化加载画布(loadFromJSON),画布保存还原
三、专项高阶API(按需查阅)
- 多边形包含关系判断:https://geek-docs.com/fabricjs/fabricjs-tutorials/fabricjs-check-if-a-polygon-object-is-fully-contained-within-another-object.html
- 场景:CAD绘图、区域圈选、碰撞检测、裁剪校验
- 公众号零散高阶专题(碎片化查阅)
- 元素相交/遮挡判断、自定义笔刷(喷雾笔)、富文本iText样式定制、自定义控件
四、学习使用顺序建议
掘金入门 → 官方文档吃透概念 → 拉取Gitee源码逐个运行Demo → 公众号补零散疑难 → 极客文档查空间几何API
五、补充小规划
- 每天实操:照着Demo仿写1个小功能;
- 阶段性目标:最后独立实现「可手绘+上传图片+右键菜单+画布保存」简易画板。
六、7天每日实操学习清单(配套现有全部资源)
资源总览:
- 入门文档:掘金 https://juejin.cn/post/7026941253845516324
- 概念文档:https://fabricjs.cc/docs/getting-started/fabric-intro-part-1/#%E5%AF%B9%E8%B1%A1
- 源码Demo:https://gitee.com/k21vin/fabricjs-demo
- 进阶专栏:公众号 https://mp.weixin.qq.com/mp/homepage?__biz=MzAwMjU3ODU5Ng==&hid=21
- 几何专项:极客教程(多边形包含)
Day1|环境搭建 + 画布、基础图形
学习资料:掘金开篇 + fabricjs.cc简介文档
- 本地搭建html引入fabric,创建canvas画布实例
- 绘制矩形、圆形、直线、多边形4种基础图形
- 练习:修改坐标、宽高、填充色、描边
作业:页面生成3个不同样式图形,可选中拖拽
Day2|文本、图片、样式与渐变
学习资料:掘金样式/图片章节 + Gitee渐变案例
- fabric.Text普通文本、IText可编辑文本创建
- 本地/网络图片加载到画布
- 线性渐变、径向渐变填充图形(参考仓库demo)
作业:一张背景图+带渐变圆形+可编辑文字组合画布
Day3|Group分组操作(重难点)
学习资料:掘金分组 + Gitee「修改组内图片」示例
- 多个元素合并分组、拆分分组
- 修改Group整体大小位置、单独修改组内部某个子元素
作业:矩形+文字打成一组,实现整体缩放、单独改文字颜色
Day4|自由绘制、橡皮擦
学习资料:Gitee源码仓库手绘、橡皮擦案例
- 开启自由手绘模式,自定义画笔粗细、颜色
- 实现橡皮擦擦除画布元素
作业:简易画板:画笔/橡皮切换按钮
Day5|画布交互:平移、缩放、右键菜单
学习资料:公众号专栏 + Gitee右键菜单demo
- 画布滚轮缩放、拖拽平移
- 自定义右键菜单:删除、置顶、置底
作业:右键弹出菜单,选中元素可删除/锁定
Day6|序列化存储(画布保存与回显)
学习资料:掘金JSON序列化章节
- canvas.toJSON()导出画布数据
- loadFromJSON()加载JSON还原画布
作业:保存按钮导出JSON、加载按钮回填画布内容
Day7|几何高阶:多边形包含 + 综合项目收尾
学习资料:极客多边形包含文档 + 全部资源复盘
- 学习判断A多边形是否完全在B图形内部(碰撞/区域校验)
- 整合前6天所有功能,完成完整成品画板:
绘图+橡皮+图片上传+分组+右键+画布存储+缩放平移
七、补充查阅规则
- 基础不懂 → 掘金+fabricjs.cc
- 缺代码示例 → Gitee仓库对照源码
- 小众疑难(笔刷、遮挡、选中限制)→ 公众号专栏
- 几何空间运算 → 极客教程
