Skip to content

份额拨盘 · story ​

状态:dial 第 3 步,动起来之前定稿。官网用的概念动画,不改 Fold 的逻辑与契约;数字见 data.json,参考分析见 spec.md。

论点:不管涌进来多少,环上永远只有 64 份;一件变大,别的就得让;游标只停在等你回的那一件上。

英雄数字:64。 两周里唯一不变的数,3196 条输入、10–26 件事、0–3 个要紧问题都量在它上面,它就是刻度本身。0.40 秒(第一个信息动作)刻度从 0 顺时针数到 64,用时 0.6 秒;1.0 秒“64”落进环心,字高约为环直径的六分之一、字重 500,让扇区名成为环上最先读到的字。之后不变值、不缩放、不变色。

三拍(共 20 秒;括号里是 story 数据集的帧。帧号是页面代码里的常量,不写进数据)

拍时长与帧发生什么观众此刻主图 / 面板
1 刻度0–5.5 秒,f00→f01(cold-00→cold-01)空环 64 格全白;76 条从五条车道进来,38 条吸进扇区,其余停在环外或熄灭;母亲换水管、猫看病各长到 12 份,留白剩 7这是一把有刻度的尺,放东西要占格刻度数出、扇区第一次长出、游标落到“Smilla 约上兽医了吗?” / 读 76 · 采用 38 · 声明 10,问题 5 · 要紧 1
2 涌入5.5–14.5 秒,f02→f25 每轮 0.375 秒(cold-02→f14 每轮 0.6 秒)累计输入从 207 滚到 2893;第一轮就顶满 64;扇区此消彼长,留白偶尔打开(最多是 f23 的 25 份);游标在“母亲九月住哪?”上停 19 轮量很大、没停过,环一格也没多扇区每轮跳一次,不连续漂;车道密度跟每轮条数 / 日期在切点硬翻,计数连滚(每轮 0.375 秒,逐轮硬翻会像闪烁)
3 让位14.5–20 秒,f26 按一轮 4 秒走完,落定后停 1.5 秒(f15)158 条进来;主水管 12→24,同一轮留白 12→1、猫看病 12→6;16 条相关输入收成线束,游标甩到主水管:“主水管:挖开换还是免挖?8/17 10:00 前”满了就得让;要你回的只有这一件一涨一缩同时落定,不画成谁推谁;游标落下 / 读 158 · 采用 40 · 声明 8,问题 5 · 要紧 1,累计 3051

空格连播 28 轮,每轮 4.00 秒,按 spec.md 末行的时间表走;hero 循环这 20 秒,回到 f00 也是一帧硬切。

两层

  • 概念层(约八成,可炫、可密、一直动):外圈三层字形与代码片段(取自同一回放的声明与事件字段,沿切线正向排)、车道上远浅近深三档灰度的记号簇、细线、仪表的滚动与抖动。只用灰阶,没有可读的数字;首次打开先静 0.4 秒,之后一直动,跨切点不断。
  • 信息层(约两成,少、准、有出处、只在节拍上动):64 刻度、扇区与留白、游标和它的问题、计数、日期、旁白 frame.title。墨黑加一个朱红,每个数字都在 data.json 里。
  • 不打架:信息层动的那 0.6 秒,概念层降到四成不透明;概念层不进环心、游标、计数、标题四块;概念层的字一律灰、小于 9px;信息层在切点硬切一帧,概念层不切(B 就是这样)。

动起来之前的约束

  • 绝不动:环心的 64、0/64 处的硬止刻、64 个刻度。
  • 每轮只动一次:扇区角度(一次 ease-out,过冲不超过 4%)、游标、计数翻牌。扇区按首次出现的先后顺时针排,位置稳定;留白固定在硬止刻之前。
  • 朱红只给等你回的问题:游标所指那条,和环外沿其余开着的问题的小刻(暗朱红)。输入、扇区、概念层都不用朱红。没有要紧问题的轮(f23–f25),游标空心退回硬止刻。
  • 只读 scenario.mjs 回放:同一组 frames、batch、asks、feedback,不另造数据管道、不改契约、不为动画加字段;story 没有 stream,车道在渲染层按 channel 归组。炫的部分全在渲染层。show 不是目的,但“想 show 就能 show,底层逻辑一行不改”是这个设计的优势:同一份状态,既能压成手表上的一圈刻度,也能铺成官网的一整屏动画。

交互(2026-10-19 加):悬停看概要,点击展开详情。两者都只读同一份回放(dial-model.mjs 的 itemFacts),都让循环与连播停在当前轮;上面的约束照旧:环不转,环心的 64、硬止刻与 64 刻度不动,卡不进环心,朱红只给问题。

  • 悬停
    • 触发:鼠标移到扇区、它的名字、游标名牌或注释框上;Tab 到扇区;触屏没有悬停,轻点一下就是悬停。
    • 动什么:一张与注释框同一套的概要卡(纸底、墨框、等宽字),写来自哪条流、份数、本轮怎么变(新增 / 变大 / 变小 / 不变 / 撤下)、本轮进了几条输入、开着的问题与期限;游标所指那件不另开卡,注释框原地加这几行。其余扇区与名字降到七成,概念层降到四成,车道上本轮进了它的真实输入点亮、其余记号降到三成。
    • 收回:离开 0.15 秒后概要卡用 0.12 秒淡出,再过 0.4 秒接着播。
  • 展开
    • 触发:点扇区、名字、概要卡或注释框;Tab 到扇区后按 Enter 或空格。
    • 动什么:0 秒是切点,标题卡改写“第 N 轮 · 条目名”,五块仪表切到这一件(输入片段只滚它的、处置格只亮它的、一轮四段只填它经过的、曲线只画它的份额、信号轴放大到本轮窗口并标出它的输入);0–0.3 秒扇区沿自己的半径弹出 8px(ease-out,过冲 3.7%),压在刻度下面;0.4–0.6 秒从扇区离卡最近的一处画出引线,背向卡片时绕环走,越过顶部时绕到“0 / 64”之外;0.6–0.9 秒详情卡从引线末端展开,先竖后横。卡里是摘要、子层、份额逐轮、本轮进了它的输入(按来源,标题截断)、开着的问题与期限、你的回应;不承载作答,问题旁的“去回答 →”链到同一帧的 D 手机首页。
    • 收回:Esc、点空白、再点同一扇区:卡 0.2 秒收起、引线 0.15 秒缩回、扇区 0.2 秒落回,然后一帧切回旁白与仪表,0.4 秒后接着播。点另一扇区先收回再展开那一件。←/→、选帧、换模式与合页顶栏选帧会立即收起并照常执行。prefers-reduced-motion 时直接到终态。