Fun Toolkit
TOOL PAGE FRAMEWORK · v1.0

工具页,先有一套好骨架。

复用已确认的版式、控件和任务状态。新工具从这套框架开始,专注自己的处理能力。

打开可运行模板 ↗下载团队 Skill · v1.0.1单独下载模板 · ZIP下载框架说明 · MD

模板原生 HTML / CSS / JS,可离线运行,已合并最新空态、占位、加载与动效基础资源。团队 ZIP 是包含 SKILL.md 的自包含 Skill,下载不会自动安装;添加后使用 $fun-toolkit-ui。在线规范 v1.4.1 与团队包是当前交付,PDF v1.2 为历史快照。

框架示例 ≠ 第四个生产工具。模拟处理不会生成真实文件,也不接入服务器、统计或需求提交。正式接入前替换业务处理与下载逻辑。

一页六区,位置固定。

预览与参数在左,输出在右;手机按任务顺序纵向排列。

桌面顺序:全站外壳 → 标题 → 左预览与参数 / 右输出 → 页脚。示意图不是实际像素稿。

1全站外壳

品牌、导航、语言与作者共用。

2标题区

一个左对齐标题,帮助入口紧邻。

3工作区

上传空态与载入后预览共用位置。

4参数区

可选字段;无参数就省略。

5输出区

状态、结果和最重要的主动作。

6页脚

文档流排布,不悬浮挡住内容。

01 / START WITH THE WORKBENCH

一套框架,按任务组合

先复用结构与状态,再接处理逻辑。统一流程:选择素材 → 预览与调整 → 生成 → 下载;自动处理工具可省去手动生成。

六区是六种职责,不是六张卡。基础工具只需左侧工作卡与右侧输出卡;一两个参数放在相关内容旁边,不另开侧栏。

六区必选内容按需模块
① 全站页头Logo 回首页、当前导航、中英切换、作者更多工具入口
② 标题与帮助一个左对齐 H1,简短工具名灰色使用说明 / 案例按钮,详情放弹窗
③ 预览与输入上传、格式约束、空态、预览、替换拖放、批量队列、透明底与背景切换
④ 参数与动作任务状态;只保留真正需要用户决定的参数尺寸、质量、裁切、播放、时间轴、生成、进度
⑤ 输出结果首次空态、有效结果、真实尺寸、下载缩略图、体积、多规格列表、ZIP
⑥ 全站页脚版权、统计、设计规范、作者确认后的资源链接
02 / LAYOUT & RESPONSIVE

桌面留空间,手机顺着做

7:3 是桌面目标比例;输出栏的最小宽度和窄屏可用性优先。

> 900 px · 双栏

  • 容器最大 1440 px,默认左右各 42 px;901–1100 px 紧凑桌面为 24 px。
  • 7:3 工作台,右栏至少 300 px;间距 16 px。
  • 1440 px 下内容宽 1356 px,双栏约 938 / 402 px。

541–900 px · 单列

  • 左右 24 px。
  • 先预览与参数,再输出。
  • 默认自然页面滚动,不强行压窄双栏。

320–540 px · 手机

  • 左右 16 px;卡片内边距 16 px、卡片间距 14 px。
  • 页头两行;操作命中区 ≥44×44 px。
  • 输入内容 ≥16 px;页面无横向滚动。
模块统一规则
标题与卡片H1 桌面 26/32、手机 22/28 px;标题到工作台桌面 16 / 手机 14 px。外卡桌面圆角 22、内边距 24 px;手机圆角 18 px。
预览高度新模板桌面空态默认 440 px,541–900 px 为 400 px;手机可用 clamp(280px, 48svh, 360px)。载入后按内容适应,不把图片比例强制变成整张工作卡高度。
长内容文件名换行或展开;英文动作不截断。需要横滑的表格与时间轴仅在自身区域滚动。
滚动与键盘默认不吸附输出栏,不给两栏同时设固定满屏高度。手机键盘和弹窗出现后,关键动作仍可到达。

当前差异:头像框 / Banner 桌面空预览 440 px,房间背景保留 590 px 长画布例外。旧卡片内边距 23 / 19 / 18 px,新增模板统一 24 px;手机均用 16 px。不要复制旧隐藏 .sources 来源侧栏。

03 / FIVE REQUIRED STATES

五个状态,先搭齐再接业务

状态占用稳定区域;重要反馈留在页面上。下面是新工具标准,不代表现有工具已经具备全部恢复能力。

状态界面与动作文案示例
idle · 上传前上传入口、支持格式、空结果;导出禁用并说明条件。点击或拖入图片
上传素材后可生成文件
ready · 已载入预览、文件名、替换、参数;手动生成或明确转入自动处理。已载入,可以调整后生成
processing · 处理中保留素材,锁定会改变当前任务的操作;按钮保宽防重;只显示真实进度。正在读取… / 正在生成… / 正在打包…
success · 成功结果可检查;展示规格与下载,保留再次调整入口。已生成 2 个文件
下载全部 · ZIP
error · 错误保留输入,在失败位置解释原因并给出恢复操作。文件读取失败,请替换文件或重试

读取、校验、编码、下载失败分别反馈;“已发起下载”不能写“已保存成功”。批量部分成功、单项重试、取消与保留旧结果需要实际实现,模板不能仅显示一个可点击入口。

04 / THREE TOOL VARIANTS

选一种变体,删掉多余模块

差异只在业务模块。页头、标题、卡片、反馈与输出继续使用同一套语言。

单文件 → 多规格

Banner

一处上传,工作卡内展示多个预览;右侧按规格列结果,提供单个下载与 ZIP。

  • 上传后自动生成。
  • 房间 772×200;游戏 684×240,内图 645×201。
  • 黑色 / 透明只切换预览,导出仍透明。
多文件 → 批量结果

房间背景

左侧批量预览;裁切、错误定位到具体文件;右侧按源文件与规格组织输出。

  • 720×1560 与 300×480。
  • 不同规格有独立裁切位置。
  • 预览 UI 图层不混入背景导出。
动画 → 选帧导出

头像框

预览下方放播放、前后帧、时间轴;右侧放选定帧、尺寸与导出。

  • 载入停在第 1 帧,点击播放才播放。
  • 默认 240×240,1:1 锁定;16–2048 整数。
  • 输出静态透明 WebP。

单文件不硬塞批量操作;动画不自动播放;没有真实质量调节能力时,不展示无效质量滑杆。未来文字 / 表单工具采用左输入、右结果,移除上传与画布槽,不造空画布填位置。

05 / STATE & INTEGRATION CONTRACT

让页面可复用,也让结果可信

结构由模板复用,业务由工具实现。内部标识稳定,显示名称可以中英切换。

状态持有

  • 语言、视口、预览背景不改变导出内容,保留素材、参数与帧位置。
  • 源文件、处理参数、选定帧改变时,旧结果应标记失效;新结果成功后再释放旧资源。
  • 任务版本拦截过期回调,旧文件不能覆盖新文件。
  • 切工具或刷新后的恢复能力需单独定义;不要承诺刷新后恢复内存文件。

真实能力边界

  • 模板不自动提供编码、SVGA 解码、上传服务、取消、持久化或共享统计。
  • 失败不计生成;ZIP 不重复计生成;下载计有效发起操作。
  • 当前统计只登记 room / avatar / banner;新工具需补前后端登记。
  • 文件类型、字节、像素、数量限制按工具明确并真实校验。
契约要求
工具标识与路由当前 data-tool 为 room / avatar / banner;地址为 #room-backgrounds / #avatar-frames / #banners。新工具使用稳定英文小写标识与可读短横线路由。
结构与字段旧页沿用 .workspace / .preview / .exports;新模板隔离样式,按职责插槽接入,不要求旧页重命名。字段 ID 带工具前缀,label for 对应唯一 ID。
状态与输出建议 data-state="idle|ready|processing|success|error";输出记录持有源文件、规格、尺寸、格式、体积、文件名、下载地址和任务版本。
双语文案按工具分组;标题、参数、错误、空态、辅助说明、ARIA 名称一起翻译。文件名、px、格式与尺寸不翻译。

旧结果失效、部分成功保留与任务版本是新增接入目标;现有三工具仍有差异。Banner 的 30 MiB / 4000 万像素上限不代表全站限制。当前没有自动注册 API,首页、hash、词条、导航与计数需要明确接入。

独立 Starter 用于复制页面骨架,不是第 4 个生产工具;状态控制器属于示例,不发起真实生成或统计。

模板实际使用empty / ready / processing / success / error,empty对应这里的idle。入口为ToolPageDemo.setState();结构以data-slot标记。替换tool-page.js中的simulateGeneration()与previewFile()接入业务,完整插槽清单见模板README。

06 / INTERACTION BASELINE

同样的动作,同样的反馈

沿用主规范的控件和动效参数,不在每个新工具里重新设计一套。

  • 主动作蓝底白字,普通 hover 保持蓝调;替换用绿色,删除用危险色。每个区域只突出当前阶段最重要的动作。
  • 鼠标输入焦点为 1 px 细蓝边和极淡光晕;键盘为 2 px 外环;错误边框不能被 hover 覆盖。
  • 主按钮复用轻扫光;禁用与处理中停用,只对精确指针 hover 触发,触屏不残留、不循环。
  • 帮助弹窗沿用轻弹性与玻璃遮罩;明确关闭按钮、Escape、焦点进入与返回;支持减少动画。
  • 导航用链接、操作用按钮、字段有标签;状态用 role=status / aria-live=polite。避免上传区与内部按钮相互重复触发。
  • 手机保持纵向滚动,操作区至少 44 px;200% 缩放与长英文仍能完成流程。

当前三个工具通过根目录 tool-feedback.css / tool-feedback.js 适配共用 feedback-motion。最新模板复用同一反馈基础:800ms Spinner、1600ms 骨架;普通内容 180ms / 6px 入场,生产 Canvas 区域 160ms 纯透明度淡入,忙碌提示 120ms 淡出。配套六张空态与两张占位 SVG,详见反馈规范 →;团队 Skill 与三步用法 →。

07 / BUILD & VERIFY

新工具接入清单

模板节省页面搭建时间,验收仍以真实文件与真实任务为准。

  1. 选择单文件 / 批量 / 动画变体,删除不用的模块。
  2. 确认输入限制、自动或手动流程、默认参数、输出规格、压缩与命名。
  3. 复用全站壳、标题与两张工作卡;补帮助、导航选中与首页入口。
  4. 接真实读取、校验、处理、编码和下载;不把模拟计时器当作正式成功。
  5. 补五态、替换、校验、失败恢复、旧结果失效与并发任务规则。
  6. 补中英、标签、键盘、弹窗焦点和减少动画。
  7. 验证 1440 / 1024 / 900 / 768 / 390 / 320 px、长英文和 200% 缩放。
  8. 用真实素材核对尺寸、透明度、画质、命名、单个 / 批量下载;统计在真实成功后接入。

复制这段,开始下一个工具。

把方括号里的内容换成业务要求,再交给开发或AI。