团队任务流看板 — Notion 极简风的轻量级 Kanban 工具

举报
yd_217436577 发表于 2026/10/15 17:22:41 2026/10/15
【摘要】 TaskFlow 是一个纯前端的看板式任务管理工具,支持拖拽卡片在「待办 → 进行中 → 已完成」列之间移动,实时统计进度,帮助小团队可视化管理工作流。

用纯前端打造 Notion 风看板工具:TaskFlow 团队任务流从 0 到 1

还在用 Excel 管理团队任务?试试这个零依赖、拖拽即用的 Kanban 看板——纯 HTML/CSS/JS 单文件,浏览器打开就能跑。

一、为什么做 TaskFlow

团队协作中,任务管理是最高频的需求。市面上的工具要么太重(Jira),要么太贵(飞书高级版),要么需要注册账号才能用。

我想要一个足够轻、足够快、足够好看的看板工具:

  • 零安装:双击 HTML 文件就能用,不装 Node、不装 Docker
  • 零依赖:不引 React、不引 Vue,纯原生三件套
  • 数据不丢:浏览器本地持久化,关页面再打开数据还在
  • 长得好看:Notion 极简风,不是那种"能跑就行"的丑 demo

这就是 TaskFlow —— 一个单文件、787 行代码、功能完整的团队任务流看板。

二、核心功能一览

1. 三列看板 + 拖拽

最核心的交互:三列看板(待办 → 进行中 → 已完成),鼠标拖拽卡片在列间自由移动。

实现上用的是 HTML5 原生 Drag and Drop API,不依赖任何第三方拖拽库。关键代码思路:

// 卡片拖起时记录 ID
card.addEventListener('dragstart', (e) => {
  e.dataTransfer.setData('text/plain', card.dataset.taskId);
  card.classList.add('dragging'); // 倾斜 + 半透明
});

// 列接收拖拽
column.addEventListener('drop', (e) => {
  e.preventDefault();
  const taskId = e.dataTransfer.getData('text/plain');
  moveTask(taskId, column.dataset.status); // 更新状态 + 重新渲染
});

拖拽时卡片有轻微倾斜 + 阴影加深的视觉效果,松手后平滑归位——这种细节是"好用"和"爱用"的区别。

2. 任务卡片信息密度

每张卡片展示:

元素 说明
标题 任务名称,一目了然
优先级标签 🔴 高 / 🟡 中 / 🟢 低,圆角药丸样式
负责人头像 取姓名首字母,生成彩色圆形头像
截止日期 日期选择器,过期自动标红
删除按钮 悬停时显示 × 图标

双击卡片打开编辑弹窗,预填已有内容;单击 × 直接删除。交互逻辑参考了 Trello 的操作习惯,用户零学习成本。

3. 进度统计 + 搜索过滤

顶部有渐变进度条,实时反映完成率(已完成 / 总任务数),带平滑动画。

搜索框支持按标题和负责人模糊搜索,优先级下拉框可筛选特定级别任务。两个过滤器可叠加使用。

4. 深色 / 浅色模式

右上角一键切换。两套配色:

  • 浅色模式:背景 #F7F7F8,卡片纯白,主色 #6366F1(靛蓝)
  • 深色模式:背景 #0D1117,卡片 #161B22,主色 #818CF8

主题切换通过给 <body> 加 data-theme 属性,CSS 变量统一控制,切换瞬间无闪烁。

5. localStorage 本地持久化

这是"工具"和"玩具"的分界线。所有任务数据自动存入 localStorage,页面刷新、关闭浏览器都不丢。

function saveTasks() {
  localStorage.setItem('taskflow_tasks', JSON.stringify(tasks));
}

function loadTasks() {
  const data = localStorage.getItem('taskflow_tasks');
  return data ? JSON.parse(data) : getSampleTasks(); // 首次加载给示例数据
}

首次打开时自带 6-8 条示例任务,分布在三列中,让用户立刻看到完整效果而不是空页面。

三、设计哲学:Notion 极简风

好工具不需要花哨的装饰。TaskFlow 的设计原则:

大量留白

卡片之间、列之间、模块之间都有充足的间距。不挤、不乱,视觉呼吸感强。

无边框卡片

卡片不用边框,用微阴影区分层次。边框会让界面变"硬",阴影则更柔和。

柔和配色

主色用 #6366F1(靛蓝),不是刺眼的纯蓝。状态色用柔和的红黄绿,不是 #FF0000 这种原色。

响应式

最小适配 768px 宽度(平板),三列自动调整间距。桌面端宽屏下三列平铺,窄屏下列宽收窄但保持三列布局。

四、技术亮点

单文件架构

整个应用就一个 index.html,HTML + CSS + JS 全部内联。好处:

  • 分发极简:发一个文件就能用,不用打包不用部署
  • 离线可用:不请求任何 CDN,断网也能跑
  • 易于阅读:一个文件看完全部源码,适合学习

CSS 变量驱动主题

:root {
  --bg-primary: #F7F7F8;
  --bg-card: #FFFFFF;
  --color-primary: #6366F1;
  --shadow-card: 0 2px 8px rgba(0, 0, 0, 0.08);
}

body[data-theme="dark"] {
  --bg-primary: #0D1117;
  --bg-card: #161B22;
  --color-primary: #818CF8;
  --shadow-card: 0 2px 8px rgba(0, 0, 0, 0.3);
}

所有颜色引用变量,切换主题只需改 data-theme 属性,一个 JS 行搞定。

模态框 backdrop blur

新增/编辑任务的弹窗用 backdrop-filter: blur(4px) 实现毛玻璃遮罩,比纯黑半透明更精致。

拖拽占位虚线框

拖拽时目标列显示虚线占位框,提示用户"可以放在这里"。这是用 dragover 事件动态添加 CSS class 实现的。

五、如何使用

方式一:直接打开

下载 index.html,双击用浏览器打开即可。

方式二:本地服务器

python3 -m http.server 8080
# 浏览器访问 http://localhost:8080

操作指南

操作 效果
点击列底部 + 新增任务
双击卡片 编辑任务
拖拽卡片 移动到其他列
点击卡片 × 删除任务
搜索框输入 过滤卡片
右上角月亮图标 切换深色模式

六、项目结构

taskflow/
├── index.html    # 全部代码(HTML + CSS + JS 内联)
└── README.md     # 项目说明

就这么多。没有 package.json,没有 node_modules,没有构建步骤。

七、从 demo 到产品

TaskFlow 已发布至华为云开发者作品展览馆,可以通过以下方式体验:

  • 在线预览:通过 DevBridge 隧道公网访问
  • 源码仓库:GitCode 上已开源
  • 作品页面:华为云开发者作品展览馆

未来可扩展方向

方向 思路
多人协作 接入 WebSocket,实时同步拖拽操作
云端存储 对接华为云 OBS 或 RDS,跨设备数据同步
用户认证 接入华为云 IAM,区分个人/团队空间
任务附件 支持上传图片/文件到 OBS
日历视图 增加日历模式,按截止日期可视化
数据导出 导出 JSON/CSV,方便迁移

八、总结

TaskFlow 证明了:好的工具不需要复杂的技术栈。

787 行代码,单文件,零依赖,实现了拖拽看板、优先级管理、搜索过滤、深色模式、本地持久化——这些功能用 React 写至少要 5 个组件 + 3 个 hooks + 1 个状态管理库。

有时候,最简单的方案就是最好的方案。

技术不是越新越好,而是越合适越好。纯前端单文件方案在"轻量任务管理"这个场景下,就是最合适的选择。


相关链接:


本文作品 TaskFlow 由华为云 CodeArts Agent 辅助开发,已发布至华为云开发者作品展览馆。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。