---
title: "Time elements with data attributes"
sidebarTitle: "Data attributes"
description: "Place clips on the HyperFrames timeline without putting timing logic in JavaScript."
---

HyperFrames keeps timing in HTML. A timed element normally needs a stable ID,
a start, a duration, and a track:

```html
<section id="headline" class="clip" data-start="0" data-duration="3" data-track-index="1">
  Launch day
</section>
```

| Attribute          | What it controls                                 |
| ------------------ | ------------------------------------------------ |
| `data-start`       | When the element enters the composition timeline |
| `data-duration`    | How long its timeline slot lasts                 |
| `data-track-index` | Which timeline lane owns that slot               |

Add `class="clip"` to timed DOM and image elements so the runtime can control
their visibility. Video visibility is managed by the media runtime; audio has
no visual lifecycle.

## Tracks are not layers

Tracks prevent time ranges from colliding. They do not decide which element is
in front. Use CSS `z-index` for paint order.

Two clips on one track cannot overlap. Put an intentional overlap, such as a
crossfade, on separate tracks:

```html
<video
  id="intro"
  data-start="0"
  data-duration="4"
  data-track-index="0"
  src="./intro.mp4"
  muted
  playsinline
></video>
<section id="result" class="clip" data-start="intro - 0.5" data-duration="3" data-track-index="1">
  The result
</section>
```

## Start relative to another clip

A numeric `data-start` is an absolute time in seconds. A clip ID means “start
when that clip ends.” Add or subtract seconds for a gap or overlap:

```html
data-start="intro" data-start="intro + 0.5" data-start="intro - 0.5"
```

References resolve only inside the same composition. The referenced clip must
have a known duration, and reference chains cannot contain a cycle.

## Media and nested compositions

Media can also declare a source offset, playback rate, and volume. A nested
composition adds a source path and its own fixed timeline window. These are
exact contracts rather than new timing models.

Use the [HTML schema reference](/reference/html-schema) for every supported
attribute and element-specific rule. Use [Compositions](/concepts/compositions)
to decide when a scene should become a separate composition.
