Split Vignette
Cursor-following vignette that visually splits across full-screen gallery sections. Each 120vh section uses clip-path to clip a position:fixed vignette bound to shared spring-smoothed mouse values, so the vignette's image swaps at section seams. Backgrounds parallax ±200px on scroll; the final section swaps the vignette image per hovered name. Rebuilt from Olivier Larose's Mesh Dojo demo.
Preview








Dyal Thak
Leidinger Matthias
Mark Rammers
Landon Speers

Source
"use client";
import { useEffect } from "react";
import SplitVignette from "./index.jsx";
import { splitVignette } from "../demo-data.js";
import styles from "./demo.module.css";
export default function SplitVignetteDemo() {
// Original demo runs Lenis smooth scroll on the page
useEffect(() => {
let lenis;
let cancelled = false;
(async () => {
const { default: Lenis } = await import("lenis");
if (cancelled) return;
lenis = new Lenis({ autoRaf: true });
})();
return () => {
cancelled = true;
lenis?.destroy();
};
}, []);
return (
<div className={styles.demo}>
<SplitVignette projects={splitVignette.projects} />
</div>
);
}
Dependencies
framer-motionlenis