核心概念

数据属性

控制元素时序和行为的核心属性。

Hyperframes 使用 HTML 数据属性来控制时序、媒体播放和合成结构。这些是每个视频的声明式构建块。

时序属性

属性示例描述
data-start"0""intro"以秒为单位的开始时间,或用于相对时序的片段 ID 引用
data-duration"5"以秒为单位的持续时间。图片必填。视频/音频可选(默认为源文件时长)。合成上不使用。
data-track-index"0"时间线轨道编号。控制 z 轴排序(数值越大越靠前),并将片段分组到行中。同一轨道上的片段不能重叠。

媒体属性

属性示例描述
data-media-start"2"媒体播放偏移 / 裁剪点(秒)。默认值:0
data-volume"0.8"音频/视频音量,0 到 1
data-has-audio"true"表示视频有音轨

合成属性

属性示例描述
data-composition-id"root"合成包装器的唯一 ID(每个合成必填)
data-width"1920"合成宽度(像素)
data-height"1080"合成高度(像素)
data-composition-src"./intro.html"外部合成 HTML 文件的路径
data-variable-values'{"title":"Hello"}'传递给嵌套合成的 JSON 值对象。在子合成内部,通过 window.__hyperframes.getVariables() 读取——运行时会将这些值覆盖在子合成自身的 data-composition-variables 默认值之上,并按实例暴露合并后的结果(相同的源文件可以使用不同的值嵌入多次)。
data-composition-variables'[{"id":"title","type":"string","label":"Title","default":"Hello"}]'声明变量的 JSON 数组(idtypelabeldefault)。驱动 Studio 编辑界面,并提供 window.__hyperframes.getVariables() 读取的默认值。CLI 标志 hyperframes render --variables '<json>' 在顶层渲染时覆盖这些默认值;宿主元素通过 data-variable-values 逐实例覆盖。

元素可见性

为所有定时元素添加 class="clip",以便运行时管理其可见性生命周期:

<h1 id="title" class="clip"
data-start="0" data-duration="5" data-track-index="0">
Hello World
</h1>

相对时序

片段可以在 data-start 属性中引用另一个片段的 id,而不是计算绝对开始时间。这意味着"在该片段结束时开始":

<video id="intro" data-start="0" data-duration="10" data-track-index="0" src="..."></video>
<video id="main" data-start="intro" data-duration="20" data-track-index="0" src="..."></video>
<video id="outro" data-start="main" data-duration="5" data-track-index="0" src="..."></video>

main 解析为第 10 秒,outro 解析为第 30 秒。如果 intro 的持续时间发生变化,下游片段会自动调整。

偏移(间隙和重叠)

在 ID 后添加 + N- N 来设置相对于被引用片段结束时间的偏移:

<!-- intro 之后有 2 秒间隙 -->
<video id="scene-a" data-start="intro + 2" data-duration="20"
data-track-index="0" src="..."></video>

<!-- 与 intro 重叠 0.5 秒(交叉淡入淡出) -->
<video id="scene-b" data-start="intro - 0.5" data-duration="20"
data-track-index="1" src="..."></video>

ℹ️ Note

重叠的片段必须在不同的轨道上——同一轨道上的片段不能在时间上重叠。

仅限同一合成 -- 引用在片段所属父合成内解析。你不能引用兄弟或父合成中的片段。

禁止循环引用 -- 如果 B 在 A 之后开始,则 A 不能在 B 之后开始。解析器会检测循环并抛出错误。

被引用的片段必须有已知的持续时间 -- 要么有明确的 data-duration,要么有从源媒体推断出的持续时间。如果被引用的片段没有已知的持续时间,引用无法解析。

解析规则 -- 如果值是有效的数字,则视为绝对秒数。否则按以下方式解析:

  • <id> -- 在该片段结束时开始
  • <id> + <number> -- 在该片段结束后 N 秒开始
  • <id> - <number> -- 在该片段结束前 N 秒开始

链式长度 -- 引用可以链式(A -> B -> C),但深层嵌套链会使时间线难以理解。为保持可读性,建议链式层级不超过 3-4 层。

下一步

  • 合成 合成如何使用数据属性定义视频结构
  • HTML Schema 参考 包含每个元素详细信息的完整属性参考
  • GSAP 动画 在数据属性驱动的时序旁为元素添加动画
  • 常见错误 设置时序和属性时需要避免的陷阱