CSS & Animations

Style elements with Tailwind classes, CSS animations, and time-driven CSS custom properties.

Tailwind

Tailwind is configured in all scaffolded compositions. Use utility classes directly on any element:

Interactive example

CSS animations

Standard @keyframes and the animation property work as expected. The renderer steps through frames deterministically so animations are frame-accurate.

animation-fill-mode: both

Prefer to use animation-fill-mode: both (the both keyword in the shorthand). Without it, elements snap to their pre/post-animation state at frame boundaries, causing visible flicker.

Per-segment stagger (ef-text)

When ef-text uses split, each segment gets CSS variables for coordinated animations:

Interactive example

Use --ef-seed for random variation:

Interactive example

Time-driven CSS variables

Editframe sets CSS custom properties on every element during rendering and preview. Use them to drive animations directly from the timeline without JavaScript.

Interactive example

Crossfade between scenes

Interactive example

The --ef-transition-duration and --ef-transition-out-start variables are set automatically based on the parent's overlap value — you don't compute them manually.