Skip to content
Get Started

01Public reference // decision first

Choose the intent. Compose the scene.

A concise guide to the stable Velora grammar. Start with what the interface must communicate, choose a channel, then add its timeline and fallback.

01IntentWhat should change?
02ChannelWho owns the motion?
03FallbackWhat remains readable?

Core

Behavior

Channels, timelines, state, scene clocks, accessibility and fallbacks. Host-agnostic and CSS-only.

Skin

Voice

Color, type, material, geometry and motion personality. The semantic product remains unchanged.

Start here

What does the interface need to communicate?

Six jobs cover the public motion grammar. Each route below points to one canonical family instead of a wall of presets.

Arrive or leave

Introduce content, remove it or change visibility.

Stableenter + exit
Respond

Make hover, focus, press and native state feel intentional.

Stablehover + state
Show progress

Connect type, media or geometry to reading progress.

Progressiveview + scroll
Orchestrate

Coordinate children, beats and narrative handoffs.

Stablestage + acts
Navigate

Direct movement between documents with semantic links.

Stableview transitions
Experiment

Inspect every preset and emerging platform feature separately.

Labno public dependency

The grammar

Six channels. One element can compose several.

Channels keep behaviors independent. A card may enter once, react on hover, move with scroll and preserve native state without those responsibilities colliding.

Canonical composition
<article
  vl-enter="reveal-cinematic"
  vl-scroll="media-zoom"
  vl-hover="hover-lift"
  vl-timeline="view">
  ...
</article>

Use channel attributes for new work. vl-effect remains a compatibility surface for named extended recipes.

vl-enter
Arrive with hierarchy

Initial or view-linked entrance.

vl-exit
Leave with continuity

Readable resting state without animation.

vl-scroll
Follow progress

Animation range follows viewport progress.

vl-hover
Respond to intent

Hover and keyboard focus share feedback.

vl-loop-effect
Maintain presence

Ambient only; disabled by reduced motion.

vl-state
Preserve state

Persistent interface lifecycle.

Lifecycle + interaction

Use the smallest behavior that communicates the change.

These are the representative public recipes. The exhaustive variants remain available in Motion Lab.

reveal-cinematic
Editorial arrival

Stable enter channel · still state is fully visible.

mask-sweep
Masked reveal

Progressive clip enhancement · content remains visible.

enter-exit
Discrete visibility

Uses modern discrete transitions with a visible fallback.

expand
Intrinsic dimensions

Animate toward intrinsic size without measuring it.

top-layer
Native top layer, focus behavior and CSS transition.
border-trace
Hover or focus

Same affordance for pointer and keyboard.

Reading progress

Choose the driver before choosing the effect.

view follows an element crossing the viewport. scroll follows a scroll container. auto maps scene acts to elapsed time.

Timeline decision
view · element progressscroll · container progresshover · intent gateauto · elapsed time

No timeline means ordinary time-based CSS animation.

reveal
Reveal on progress

Stable baseline · composed final state on fallback.

media-zoom
Media zoom

Scroll-linked scale without layout movement.

text-highlight
Meaning appears as reading advances
path

offset-path enhancement · static endpoint fallback.

range
Focused view window

Override only when the preset range does not match the story.

Orchestration

Track. Stage. Acts. One shared CSS clock.

The canonical authoring model separates narrative time from visual styling, so the same HTML can live inside any host or Skin.

Baseline recipe
<section vl-scene vl-timeline="view" vl-pin="3" vl-scrub>
  <div vl-stage>
    <h2 vl-enter="clip-rise" vl-act="1">Context</h2>
    <p vl-enter="fade-up" vl-act="2">Evidence</p>
    <img vl-scroll="media-zoom" vl-act="3" vl-span="2">
  </div>
</section>

Behavior belongs to Core. Layout and material belong to the host or Skin.

Live · pin + scrub

Act 1 · context

One shared clock

Act 2 · evidence enters.

Acts 3–4 · evidence holds.

Act 5 · handoff.

stagger
ABC

Simple ordered arrival.

orchestrate
ABC

Mixed editorial children.

grid-wave
ABC

Spatial grid progression.

sequence
ABC

Discrete timed sequence.

Navigation

Page transitions belong to document movement.

Choose the voice globally and keep links semantic. Element lifecycle stays on enter, exit and state channels.

Shared elements
<html vl-page-transition="cinema">
  <header class="vl-vt-shared-nav">...</header>
  <a class="vl-vt-shared-brand">...</a>
</html>
cinema
Editorial depth and continuity.
wipe
Directional document change.
glide
Quiet spatial handoff.
iris / snap
Expressive and immediate voices.

Support + parameters

Modern CSS is progressive by contract.

Experimental syntax never gates content, navigation or native state. Reduced motion always resolves to a readable composed state.

Stable

@starting-style, discrete transitions, intrinsic-size interpolation, scroll-driven animation, dialog and popover state.

Progressive

calc-size(), anchor positioning, customizable select, scroll markers, sibling-index() and motion paths.

Motion Lab

CSS functions, scroll triggers, emerging shapes and element-scoped View Transitions.

Motion mode
standardsubtlecinematicstill
Speed
fastnormalslowcinema
Range
entry-shortcoverscene-focusfull
Direction
normalreversealternate
Need every variant?

The Motion Lab preserves exhaustive preset proofs, aliases, experimental components and QA controls without making them part of the public learning path.