CrazyGLCrazyGLHomeExploreGitHubBrowse heroesLoading hero…← Back to gallery@crazygl/torn-layers

Screenshot Torn Into Layers

A background screenshot plus up to five overlay images, each placed on its own depth plane with X / Y / Z / scale controls. On load each layer slides in from depth with a staggered easeOutBack overshoot; hover spreads them further apart along Z.

ReactWebGL3DImageInteractiveFont#three#3d#layers#screenshot#depth#parallax#design

Usage

import HeroTornLayers from '@crazygl/hero-torn-layers';

export default function Hero() {
  return (
    <HeroTornLayers
      backgroundImage="/screenshots/dashboard.avif"
      layer1Image="/screenshots/phone-a.avif"
      layer1X={-0.4}
      layer1Z={0.2}
      hoverSpread={1.5}
      cameraParallax={0.6}
    />
  );
}

Customise

  • ContentcontentType (heading / two-columns / custom) plus heading, subheading, column1 / column2, or content.
  • OveralloverallOffsetX / overallOffsetY, overallScale, overallRotation transform the entire set.
  • Background imagebackgroundImage full-frame plane behind everything.
  • Layer 1–5 — each has layerNImage, layerNX, layerNY, layerNZ (depth), layerNScale. Empty image hides the layer.
  • MotionloadDelay (entrance stagger), hoverSpread (Z push on hover), cameraParallax (pointer-driven camera offset).
  • LayoutcontentAlign, heroHeight, paddingX / paddingY.

Best for

  • Product page hero compositions where a UI screenshot, modal cutout and phone mockup need to feel like they live in real 3D.
  • SaaS / design-tool / dashboard launches where the layered system is the product.
  • Agency and portfolio showcases that want a tactile depth-stack out of the box.
01 · Install the package

One command, zero config.

npm install @crazygl/hero-torn-layers
02 · Render the component

Import once, drop it in.

The component takes the same props you see in the live customizer on the right — every default ships poster-quality.

hero.tsx
import ScreenshotTornIntoLayers from '@crazygl/hero-torn-layers';

export default function Landing() {
  return (
    <ScreenshotTornIntoLayers />
  );
}
03 · Use it in a page

SSR-safe by default.

The wrapper renders static HTML on the server and only initialises the canvas after hydration, so search engines see your copy.

page.tsx
// app/page.tsx — works in SSR-first frameworks (Next, Remix, Astro, etc.)
'use client';

import ScreenshotTornIntoLayers from '@crazygl/hero-torn-layers';

export default function Page() {
  return (
    <section>
      <ScreenshotTornIntoLayers
        heading="Say hi."
        subheading="Your new hero."
      />
      <article>
        <h2>Welcome</h2>
        <p>Your content keeps its own voice below the hero.</p>
      </article>
    </section>
  );
}
You might also like

Similar heroes

Torn Poster Hero

Layered torn posters build a premium campaign collage with depth, shadows, and a subtle peel-away motion.

Magazine Cover Product Hero

A product visual plays like a moving magazine cover, with large type sharing the frame and layered imagery adding subtle editorial depth.

Typography Shadows

Abstract letterforms floating at different depths behind the hero, with dramatic shadows and pointer-driven parallax.

Screenshot in a Floating Metal Frame

Your product screenshot held inside a brushed-metal frame, lit like a physical product photograph. The frame sits at an adjustable static angle, tilts with the pointer for parallax, and optionally rotates to catch studio highlights.

Screenshot as a 3D Card Stack

Your main product screenshot sits on top of a stack of secondary UI cards. The front card swoops up and over to the back at a configurable interval, autonomously cycling through every screen. Soft drop shadows, a cyan edge glow on the top card, cursor parallax tilt.

Vertical Phone Screenshot With 3D Depth

A mobile screenshot floats inside a realistic 3D phone mockup. The phone rotates with the cursor and the screen pulses with subtle app glow. Perfect for app launch pages.
Live customizer

Screenshot Torn Into Layers

Overall X offset0worldHorizontal position of the entire screenshot set (background + all layers). 0 = centered.Overall Y offset0worldVertical position of the entire screenshot set.Overall scale1Scale multiplier for the entire screenshot set.Overall rotation0°Rotation of the entire screenshot set around its center.Background imageFull-frame image rendered on a fixed plane behind every layer.ImageLeave empty to hide this layer.X-0.4worldHorizontal position of this layer. 0 = centered.Y0.1worldVertical position of this layer. 0 = centered.Scale0.35Size of this layer. At 1.0 it fits the background.Z (depth)0.2Depth offset. Higher = closer to camera.ImageLeave empty to hide this layer.X0.4worldHorizontal position of this layer. 0 = centered.Y0.15worldVertical position of this layer. 0 = centered.Scale0.3Size of this layer. At 1.0 it fits the background.Z (depth)0.4Depth offset. Higher = closer to camera.ImageLeave empty to hide this layer.X-0.5worldHorizontal position of this layer. 0 = centered.Y-0.05worldVertical position of this layer. 0 = centered.Scale0.4Size of this layer. At 1.0 it fits the background.Z (depth)0.5Depth offset. Higher = closer to camera.ImageLeave empty to hide this layer.X0.15worldHorizontal position of this layer. 0 = centered.Y-0.15worldVertical position of this layer. 0 = centered.Scale0.45Size of this layer. At 1.0 it fits the background.Z (depth)0.7Depth offset. Higher = closer to camera.ImageLeave empty to hide this layer.X0worldHorizontal position of this layer. 0 = centered.Y0worldVertical position of this layer. 0 = centered.Scale1Size of this layer. At 1.0 it fits the background.Z (depth)1Depth offset. Higher = closer to camera.Load stagger0.15s/layerStaggered delay between each layer's entrance. 0 = simultaneous, 0.15 = classic cascade.Hover spread1.5How much the layers push apart on hover. 1 = no spread, 1.5 = pleasant pop.Camera parallax0.6Pointer-driven camera offset. 0 = locked, 1 = aggressive, 3 = exaggerated parallax sweep.Heading fontInteractivityWhich input drives the hero — try Scroll if you want the page to drive motion.
CrazyGL · crazygl.comProgrammable hero sections for real websites.