BoilerPrompt
v0

v0 prompt for an animated hero background

This v0 prompt builds only the background layer — a drop-in client component that slots behind an existing hero and picks gradient mesh, particles, or geometric drift to match the chosen style. It hard-codes a performance contract: transform-only animation, one rAF loop, reduced-motion fallback. The customizer's motion setting directly scales intensity.

Last updated

Prompt
Build an animated background layer for the hero of my {{product}} landing page in v0 — a single client component, <HeroBackdrop />, rendered as the first child of the existing hero section. It sits behind the content that is already there; it must not add, move, or restyle any hero copy.

Layering contract:
- The hero root gets relative and overflow-hidden; the backdrop is absolute inset-0 with z-0 and pointer-events-none; existing content wraps in z-10. Nothing else changes.
- Keep an inner quiet zone: no high-contrast shape may pass within 80px of the headline and button block, so the copy always sits on a calm area.

Choose ONE technique to match the visual direction below: a gradient mesh of three or four blurred radial blobs drifting on CSS transforms if the direction reads soft or gradient-led; a canvas particle field if it reads technical or dark; slow-drifting geometric SVG outlines if it reads editorial or brutalist.

Performance budget (hard rules): animate transform and opacity only, never layout properties; one requestAnimationFrame loop at most; canvas capped at devicePixelRatio 2 and 80 particles; zero React state updates per frame. Under prefers-reduced-motion, render a static first frame and never start the loop.

Visual direction:
{{style}}

Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}

Motion governs intensity: map it to drift speed, travel distance, and element count together — the calm end means slow, short, few.

Legibility: add a subtle scrim between backdrop and content so the headline and the primary button labelled "{{cta}}" hold at least 4.5:1 contrast for {{audience}} reading at a glance.

Responsive: below 768px, halve the element count and slow the drift by one step.

After building, check that: (1) clicking anywhere over the hero content still works — the layer captures no pointer events, (2) emulating prefers-reduced-motion in devtools freezes the layer, (3) headline and CTA pass contrast over the busiest area of the animation, (4) no layout shift occurs when the layer mounts. If a check fails, regenerate only HeroBackdrop.

Customize it

Runs in your browser. Nothing you type here is sent anywhere.

Your customized prompt
Build an animated background layer for the hero of my a project management SaaS landing page in v0 — a single client component, <HeroBackdrop />, rendered as the first child of the existing hero section. It sits behind the content that is already there; it must not add, move, or restyle any hero copy.

Layering contract:
- The hero root gets relative and overflow-hidden; the backdrop is absolute inset-0 with z-0 and pointer-events-none; existing content wraps in z-10. Nothing else changes.
- Keep an inner quiet zone: no high-contrast shape may pass within 80px of the headline and button block, so the copy always sits on a calm area.

Choose ONE technique to match the visual direction below: a gradient mesh of three or four blurred radial blobs drifting on CSS transforms if the direction reads soft or gradient-led; a canvas particle field if it reads technical or dark; slow-drifting geometric SVG outlines if it reads editorial or brutalist.

Performance budget (hard rules): animate transform and opacity only, never layout properties; one requestAnimationFrame loop at most; canvas capped at devicePixelRatio 2 and 80 particles; zero React state updates per frame. Under prefers-reduced-motion, render a static first frame and never start the loop.

Visual direction:
Minimal dark style. Near-black canvas (#0A0A0B) with one elevated surface tone (#141416) for cards — never more than two surface steps. Hairline borders (1px, white at 8% opacity) instead of shadows; if a shadow is unavoidable use 0 1px 2px rgba(0,0,0,0.4) and nothing softer. Text in exactly three steps: white at 92% for headings, 60% for body, 40% for captions. Generous negative space — section padding at least 120px on desktop, 64px on mobile. The accent color appears only on interactive elements and one hero highlight, nowhere else.

Palette: a strict neutral ramp (white, #F5F5F5, #E5E5E5, #737373, #171717) carries the entire interface; pick one accent and use it only for primary CTAs, active states, and a single hero highlight. If the accent appears more than five times per viewport it stops being an accent. Keep semantic colors (success, error) desaturated so the accent stays in charge.
Typography: one geometric sans (a Futura/Poppins-class face) at three weights maximum (400/500/700). Scale: 64-88px hero, 32px section heads, 18px lede, 16px body, 13px caps labels with 0.08em tracking. Tight headline leading (1.05-1.1), relaxed body (1.6). Let the geometry carry the personality — no italics; weight and size do all hierarchy.
Motion: none. Zero scroll animations, zero entrance effects — the page is fully composed the instant it paints. Spend the motion budget on input feedback instead: 120-150ms ease-out color and transform transitions on hover and press states only. Hold this constraint absolutely; it is a statement, not an omission.

Motion governs intensity: map it to drift speed, travel distance, and element count together — the calm end means slow, short, few.

Legibility: add a subtle scrim between backdrop and content so the headline and the primary button labelled "start a free trial" hold at least 4.5:1 contrast for engineering managers at startups reading at a glance.

Responsive: below 768px, halve the element count and slow the drift by one step.

After building, check that: (1) clicking anywhere over the hero content still works — the layer captures no pointer events, (2) emulating prefers-reduced-motion in devtools freezes the layer, (3) headline and CTA pass contrast over the busiest area of the animation, (4) no layout shift occurs when the layer mounts. If a check fails, regenerate only HeroBackdrop.

Same task in other tools

Questions about this prompt

How does the motion dropdown change what gets generated?

The motion block substitutes into the intensity line, and the prompt tells v0 to map it across speed, travel distance, and element count simultaneously — so a calm setting produces a few slow, short drifts while livelier settings add elements and pace. The performance budget stays fixed at every intensity.

Which of the three techniques will I actually get?

The prompt makes v0 pick based on the style paragraph: soft or gradient-led directions get the blurred mesh, technical or dark ones get canvas particles, editorial or brutalist ones get geometric outlines. To force a specific technique, delete the other two options from the technique sentence before pasting.

My hero content disappeared behind the layer — what happened?

Almost always a stacking miss: the hero root needs relative positioning, the layer z-0, and the content wrapper z-10. Ask v0 to re-check the layering contract paragraph — quoting it back in chat works — rather than regenerating the whole component.

Part of the v0 landing-page cluster — start from the main v0 landing page prompt.

Related prompts