HTML Anything motion-frames 动效帧模板实战:用纯 CSS 打造可循环的 Hero 视频帧

  • AI 应用
  • 人工智能
  • AI Agent
  • AI 写作
  • 媒体生成

【免费下载链接】html-anything

✨ The agentic HTML editor — your local AI agent writes the HTML, you ship it. 🚀 75 Skills × 9 Surfaces (magazine · deck · poster · XHS / tweet · prototype · data report · Hyperframes) 🛡️ Sandboxed preview · 📤 1-click to WeChat / X / Zhihu / HTML / PNG 🔑 Zero API key — Claude Code / Cursor / Codex / Gemini / Copilot / OpenCode / Qwen / Aider.

项目地址: https://gitcode.com/gh_mirrors/ht/html-anything
点击查看 免费下载

导读

motion-frames(动效英雄帧 / Motion Frames)是 HTML Anything 内置的 75 个技能模板之一,属于 frame 表面下的一款通用动效设计帧:它用一个自带循环 CSS 动效的 HTML 单帧作为视频片头或落地页大图,组合了旋转文字环、抽象地球仪、计时器与浮动视差标签四大视觉元素。读完本文,你将掌握该模板的意图与布局规范、SKILL 元数据驱动的模板注册机制、CLI 关键词匹配的触发方式,并能基于仓库自带的完整 example.html 逐步拆解每一个动效的 CSS 实现原理,最终复制改造出属于自己的循环动效帧。

一、模板定位:一帧能循环的 hero,而非多帧脚本

motion-frames 与同目录下的 video-hyperframes 分工明确:

  • video-hyperframes 输出 N 个连续 <section class="frame">,靠 <!-- frame:N duration:3000 transition:fade --> 隐藏标记和顶部 JS 自动播放脚本串联成一段可交给 Remotion 渲染成 .mp4 的帧序列;
  • motion-frames 则只交付单帧,但这单帧内的动效全部由 CSS 驱动、可无限循环,适合作为视频片头(title card)或落地页 hero 大图,本身无需 JS 也能持续运动。

这一点在 SKILL 文档的【意图】中写得很明确:一帧带循环动效的 hero, 可作为视频片头或落地页大图。仓库 README 的模板总表把它归入 "Hyperframes video frames & VFX & device mockups" 分组,并标注为 Generic motion-design frame(通用动效设计帧),README.md。其 frontmatter 中 category: video、scenario: marketing、aspect_hint: "桌面 hero" 三个字段,决定了它在模板选择器中的分类、场景过滤与宽高比提示。

二、SKILL 元数据:模板如何被注册、加载与匹配

2.1 目录即模板:无需写代码即可注册

每个技能就是一个文件夹,loader.ts 注释明确描述了这一约定:

src/lib/templates/skills/<id>/
  SKILL.md      — frontmatter (id, scenario, tags, …) + prompt body
  example.md    — (optional) sample input content
  example.html  — (optional) pre-rendered preview, shown inline in the picker

新增模板 = 新增一个文件夹,不需要改动任何 TypeScript 代码。loader.ts 会在服务端扫描 src/lib/templates/skills 目录,解析每个文件夹下 SKILL.md 的 YAML frontmatter 生成 SkillMeta,再通过 GET /api/templates 提供给前端选择器(route.ts);example.html 的存在与否决定了选择器里能否显示内联预览(skillHasPreview)。

2.2 motion-frames 的 frontmatter 字段解读

SKILL.md 顶部的元数据是整个注册表的"身份证":

字段值作用
namemotion-frames模板唯一 id,也是目录名
zh_name动效英雄帧界面展示的中文名
en_nameMotion Frames界面展示的英文名
emoji🌀选择器中的图标
description可循环 CSS 动效组合: 旋转环、地球仪、计时器、视差标签一句话能力描述
categoryvideo归类到视频/动效类别
scenariomarketing营销场景,供场景过滤使用
aspect_hint桌面 hero建议宽高比与用途
featured6精选排序权重,数值越小越靠前
tags["motion", "title card", "loop", "video poster"]检索与匹配标签

其中 featured 直接参与选择器的精选排序逻辑:template-picker.tsx 中排序函数对带 featured 的模板按数值升序排列、未设置者排最后(template-picker.tsx)。tags 则在 CLI 的模板匹配评分中每个命中 +3 分。

2.3 CLI 如何命中这个模板

motion-frames 在 CLI 技能匹配器中注册了一组强信号关键词:skills-matcher.ts

[["motion", "动效", "循环", "动画", "CSS动画"], "motion-frames"],

当你的输入内容命中其中任意关键词时,strongSignalMatch 会给每个命中词计 2 分并额外加 3 分基础分(confidence = matched.length * 2 + 3),超过阈值 CONFIDENCE_THRESHOLD = 3 即直接命中该模板,无需再走 AI 摘要兜底(skills-matcher.ts)。同时,scenario: marketing 对应的场景信号词表(如 marketing / 推广 / 品牌 / landing page / 落地)在规则评分中每个命中 +1 分(skills-matcher.ts)。

也就是说,写"做一个带循环动效的视频片头 / 落地页 hero"这类需求,本地 CLI 就能自动选中 motion-frames。

三、模板意图与四层布局规范

SKILL.md 的【布局】定义了四个核心组成(SKILL.md):

  1. Rotating type ring(旋转文字环)——SVG + transform 实现,环形排列的标签随外圈同步旋转;
  2. Animated globe(动态地球仪 / 抽象几何)——自转的抽象球体;
  3. Ticking timer(计时器)——等宽字体(mono)呈现,JS 可有可无,即纯静态帧也能成立;
  4. Parallax labels(视差标签)浮动——独立于旋转环的浮动标注层。

【设计细节】给出两条硬性约束:

  • 纯 CSS 动效,流畅可循环:所有运动都必须是可无限循环的 CSS 动画,不能依赖一次性 JS 计时器;
  • 电影感调色 + 1 个霓虹 accent:整体用一套低饱和的电影调色板,且全画面只保留一个强调色,避免多色互相抢戏。

这两条规范正是下面 example.html 实现中"一切动画都是 linear infinite"的直接来源。

四、示例实现源码拆解:Charlotte & Vine 全球广播帧

仓库为 motion-frames 提供了完整可运行的 example.html,一个名为 "Reach every country" 的广播风 hero。我们逐层拆解它的实现,这也是 SKILL 文档四要素的落地样板。

4.1 设计令牌:电影感调色板

:root 上定义了五个 CSS 变量(example.html):

--paper: #f3eee5;   /* 米白纸张底色 */
--ink: #1a1816;     /* 近黑主文字色 */
--muted: #7a766c;   /* 次级灰调 */
--accent: #c0563b;  /* 唯一的霓虹/强调色:赭红 */
--serif: 'Cormorant Garamond', 'Iowan Old Style', Georgia, serif;
--mono: ui-monospace, 'JetBrains Mono', monospace;

整帧只有 --accent 一个强调色(用于中心焦点圆点与标题斜体强调词),完美对应"1 个霓虹 accent"规范;正文用衬线体 --serif,元数据/计时器用等宽体 --mono,对应"Ticking timer (mono 字体)"。

4.2 背景与外围饰条(chrome)

main 的背景由三层径向渐变叠加:中央微弱的暗角径向渐变 + 28px 间距的网点(dot grid)+ 底色,营造纸张质感(example.html)。顶部与底部的 .chrome 饰条用等宽小号字展示 ANTHROPIC LABS — APR 17 · 2026、SIGNAL · LIVE 等元信息,是视频帧常见的"台标/时间码"式点缀。

4.3 旋转文字环(Rotating type ring):三层同心圆反向自转

核心是 .ring 系列——四个绝对定位的同心圆边框,各自独立旋转:

层inset边框样式动画时长方向
.r10实线 0.45 透明度60s顺时针
.r24%实线 0.30 透明度90sreverse(反向)
.r310%虚线 dashed 0.22 透明度180s顺时针
.r418%实线 0.12 透明度36s顺时针

配合 @keyframes spin { to { transform: rotate(360deg); } }(example.html),每层周期不同、方向相反,形成"齿轮式"的错落运动。这是纯 CSS 循环动效最典型的手法:同一 keyframes 复用 + 不同 duration + reverse 方向,即可制造深度感。

文字标签层 .ring-labels 与外圈同速(60s)同步旋转,8 个 <span> 通过 rotate(θ) translate(0, -49vh) 从圆心向 49vh 半径处展开,等分角度依次为 -12° / 34° / 78° / 132° / 178° / 224° / 266° / 312°(example.html)。由于整体用 transform 旋转,文字会随环翻转,因此内部 <i> 用 display: inline-block; transform: rotate(0) 做反旋转兜底(注释说明 counter rotation handled inside)。

4.4 动态地球仪(Animated globe):SVG 球体 + 反向自转

.globe 占居 composition 的 22% 内区,inset: 22%,复用同一个 spin keyframes,时长 38s 并 reverse(example.html),比外圈更慢地反向旋转,形成天体感。球体本体是内嵌 SVG:

  • 一个带 radialGradient(#fffaf0 → #ece6da → #cfc8b9)径向渐变填充的圆,模拟光源自左上(cx=35% cy=32%);
  • 六条扁椭圆(rx 20 / 48 / 78 与 ry 92 组合)叠加成经纬网格;
  • 六段不规则闭合 path 作为抽象大陆块。

纯 SVG + 外层 CSS 旋转,无需任何 JS,完美契合"纯 CSS 动效"约束。

4.5 霓虹焦点与视差层次

.focal-dot 是 7px 的 --accent 色圆点,位于画面正中,用 pulse 动画做呼吸扩散(example.html):

@keyframes pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(192,86,59,0.45); transform: ... scale(1); }
  50%      { box-shadow: 0 0 0 18px rgba(192,86,59,0); transform: ... scale(1.25); }
}

这是典型的"涟漪扩散"实现:用 box-shadow 从 0 扩散到 18px 并淡出到透明,叠加轻微放大,制造霓虹呼吸感。

视差与深度则通过旋转速度层级实现:外环 60s、次环 90s、虚线环 180s、内环 36s、球体 38s reverse——不同速度的同心运动天然产生"多层视差"的错觉,而 .meta-tl、.issue 这类静态角标与旋转层相对静止,进一步拉开前景/背景的层次。

4.6 标题入场与响应式

.headline 使用 type-in 动画一次性入场(cubic-bezier(.2,.7,.2,1),1.4s,both 填充模式),从 opacity: 0; letter-spacing: 0.06em 过渡到正常字距——注意它不是循环动画,循环留给旋转环与球体,入场只发生一次,符合"循环动效 + 一次性入场"的帧设计惯例(example.html)。媒体查询 max-width: 900px 下缩小标题字号并收紧边距,保证在落地页小屏也可用(example.html)。

五、模板的选择器呈现与示例预览机制

motion-frames 目录下只提供了 SKILL.md 与 example.html,没有 example.md。这意味着在 fmToMeta 生成的 SkillExampleMeta 中 hasHtml: true、hasMd: false(loader.ts):模板选择器会把它当作自带预渲染预览的技能,用户点击 Preview 时通过 GET /api/templates/motion-frames/example 一次性取回 content 与 html 两个字段(example route),直接灌入编辑器与预览 iframe,无需再让 Agent 现场生成。

在 CLI 工作流中,当你用 cli 目录下工具输入触发 motion-frames 的内容时,命中路径为:strongSignalMatch 关键词命中 → loadSkill 读取该 SKILL.md → prompt body(即【模板/意图/布局/设计细节】全文)注入 Agent 提示词 → Agent 依据示例规范输出单帧 HTML。

六、实战:基于示例改造成自己的循环动效帧

6.1 可复用的改造模板

把 example.html 作为骨架,改动三处即可变成你自己的帧:

  1. 换文案:替换 .headline 的标题(Reach every <em>country.</em>)、.ring-labels 的标签文本、上下 .chrome 饰条与 .meta-tl / .issue 的元数据;
  2. 换强调色:只需改 --accent 一个变量,全帧霓虹点缀随之统一变化(focal-dot、headline .accent、pulse 阴影色同步联动);
  3. 换节奏:调整各 .ring 的 animation-duration 与 direction——需要更"静"的落地页大图就把外层时长拉到 120s 以上,需要更"活"的视频片头就把内层压到 20s 以内。

6.2 四条可迁移的设计法则

从这帧样板中可以提炼出四条可直接复用的 CSS 动效帧设计法则:

  • 一个 keyframes 全家复用:spin 被 5 个元素共享,靠 duration / direction / inset 差异产生层次,避免为每层各写一套动画;
  • 循环留给背景,入场只给主体:旋转环、球体无限循环;标题用 both 填充的一次性 type-in,两不干扰;
  • 等宽体 + 大写 + 大字距 = 计时器质感:font: 10px/1.4 var(--mono); letter-spacing: 0.18em; text-transform: uppercase 这组组合直接复刻"ticking timer"的科技感;
  • 单强调色纪律:全帧只允许 --accent 一个饱和色,其余全部走 --paper / --ink / --muted 灰度,保证电影感。

6.3 适用场景与边界

按 SKILL.md 的定位,这个模板最适合:视频片头 title card、品牌广播式 hero、营销落地页首屏大图。aspect_hint 为"桌面 hero",即正方形 composition(width: min(78vh, 78vw); aspect-ratio: 1/1)在桌面视口中以 vh/vw 自适应缩放;如果目标是 1920×1080 横版帧序列(如交付给 Remotion 渲染 .mp4),应改用 video-hyperframes 模板,它内置了逐帧隐藏标记与自动播放脚本。这是两个模板最重要的分工边界。

七、相关资源索引

  • 模板定义:SKILL.md(frontmatter + 意图/布局/设计细节)
  • 完整实现:example.html(可直接运行的循环动效帧)
  • 模板注册与加载:loader.ts(frontmatter 解析、hasHtml/hasMd 判定)
  • 模板 API:route.ts 与 example route
  • CLI 关键词匹配:skills-matcher.ts(motion / 动效 / 循环 / 动画 / CSS动画 → motion-frames)
  • 精选排序:template-picker.tsx(featured 数值升序)
  • 同族对比:video-hyperframes(多帧序列 + Remotion 交接)
  • 全模板总表:README.md(Hyperframes video frames & VFX 分组)
  • AI 应用
  • 人工智能
  • AI Agent
  • AI 写作
  • 媒体生成

【免费下载链接】html-anything

✨ The agentic HTML editor — your local AI agent writes the HTML, you ship it. 🚀 75 Skills × 9 Surfaces (magazine · deck · poster · XHS / tweet · prototype · data report · Hyperframes) 🛡️ Sandboxed preview · 📤 1-click to WeChat / X / Zhihu / HTML / PNG 🔑 Zero API key — Claude Code / Cursor / Codex / Gemini / Copilot / OpenCode / Qwen / Aider.

项目地址: https://gitcode.com/gh_mirrors/ht/html-anything
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值