← 返回作品集1440×1440 · 60fps · 14 秒循环 · 含音乐与界面音效,默认静音播放,可在播放器中打开声音 01 02 03 04 05
MOTION DESIGN / CODE VIDEO
One Shape 连续界面变形。
一个形状踩着 120 BPM 的节拍,连续变成十二种界面,再回到起点。
一支 1440×1440、14 秒的界面动效短片。按钮、加载器、灵动岛、音乐播放器、音量滑块、开关、标签页、图表、⌘K 命令面板和通知,都由同一个形状连续变形而来;光标用点击和拖拽推动每一次变化,最后一帧与第一帧无缝衔接。画面代码、音效与渲染流程由 Claude Opus 5.5 按下方提示词完成。
节拍与结构
音乐是 Mixkit 的 House Vibes(Alejandro Magaña),实测 120.01 BPM。从第 8 小节的强拍切入,截取 7 小节、28 拍,每一拍都安排一次点击、拖拽、变形或输入;界面音效按实测峰值对齐到拍点。
一个形状,一个高亮块
画面里只有一个外形和一个内部高亮块。高亮块依次充当进度条、音量填充、开关旋钮、标签指示器、命令面板高亮行、通知图标和按钮箭头。标签指示器与开关旋钮的两条边使用不同的弹簧,前沿先到,后沿拉长跟上。
每一帧都由时间计算
全部样式在 seek(t) 中由时间计算,不使用 CSS 过渡或计时器。弹簧采用闭式阶跃响应;拖拽时数值直接来自光标位置,松手后从当时的位置弹回。颜色在 OKLab 空间过渡,避免橙色到黑色之间出现浑浊的中间色。
渲染与检查
用 Playwright 每帧渲染 4 个子帧,再用 FFmpeg tmix 合成 60fps 动态模糊。完整渲染前逐拍输出静帧,检查拥挤、遮挡与可读性;循环接缝处的帧间变化与相邻帧处于同一量级,光标位置与速度连续。
素材与来源
英文原版提示词出自 zero(@twoclipping)公开分享的连续界面变形案例,下方为本站整理的中文翻译。音乐来自 Mixkit,按 Mixkit 免费许可使用;界面音效由程序合成。画面中的曲目信息、数据和文字均为演示内容。
PROMPT / 中文
中文提示词
依据英文原版逐段翻译。使用时,Claude 会先询问界面状态、配色和音乐,再把状态排在节拍网格上,确认后才开始写代码。
本片的输入:12 个状态按上面的结构顺序;配色为黑白加一个信号橙 #FF5A1F;音乐为 Mixkit《House Vibes》。
【输入】 先向我索取:8 到 12 个希望这个形状变成的界面状态(例如按钮、加载器、播放器、滑块、开关、标签页、图表、命令面板、通知);纯黑白,还是只用一个强调色;一首约 120 BPM 的免版税音乐(例如 Mixkit,可免费商用)。 【方向】 Dribbble 水准的界面动效。一个形状,全程不切镜:每个状态都是同一个元素在改变尺寸、圆角和颜色,里面的内容以短暂的模糊完成切换。光标用真实的点击和拖拽驱动每一次变化。浅暖灰画布,黑白组件,只用一种干净的界面字体(Geist)。处处使用弹簧,最多带一点点回弹。镜头随之缩放,让每个状态都撑满画面。最后一帧就是第一帧,形成循环。 禁止:弹跳式缓动、粒子爆发、发光、界面外框上的渐变、描边粗细不一致的图标、没有动作的空拍,以及任何看起来像模板的东西。 【结构】 120 BPM,7 小节,每一拍都有事情发生。 按钮 → 加载器 → 对勾 → 灵动岛 → 带播放/暂停图标变形的音乐播放器 → 拖动进度条 → 进度条变成音量滑块,拖过最大值时被拉伸 → 开关踩着拍点翻转 → 开关旋钮变成液态的标签指示器 → 标签页展开成自动绘制的图表,悬停时出现提示框 → 收拢成 ⌘K 命令面板 → 输入筛选 → 回车 → 通知 → 回到按钮。 【制作】 1. 单个 HTML 文件,正方形 1440×1440。所有样式都在 seek(t) 中由时间计算:不用 CSS 过渡,不用计时器,帧与帧之间不保留任何状态。 2. 弹簧采用闭式阶跃响应。一个值多次改变目标时,就是每次改变各自一条弹簧的叠加,因此它始终是时间的纯函数。 3. 标签指示器的左右两条边使用不同的弹簧,让前沿先于后沿伸出去。开关旋钮使用同样的手法。 4. 拖拽是直接操控:按住光标时,数值由光标位置计算;松手后,从当时所在的位置弹回。 5. 用 numpy 分析歌曲,得到节拍网格,并从一个强拍开始。每个界面音效按它实测的峰值对齐放置。 6. 用 Playwright 渲染:每帧 4 个子帧,用 ffmpeg 的 tmix 混合出动态模糊,输出 60fps。 7. 完整渲染之前,先每拍渲染一帧。修正任何没有落在节拍上、显得拥挤或难以看清的地方。 【注意】 不要给任何会被镜头缩放的元素加 will-change,否则文字会发虚。在变形容器里切换的文字,需要各自的进场和退场时间,否则会互相重叠。最后一帧要与第一帧完全一致,包括光标的位置和速度,否则循环会卡顿。 【开始】 先向我索取上面的输入;在写任何代码之前,先把状态列表排在节拍网格上给我看。