Blend Screen Effect
Original · freeA screen-blend colour wash lifts off on hover.
Copy prompt gives Claude Code, Cursor or v0 a ready-to-paste prompt that recreates this exact component.
npx shadcn@latest add https://webinnoventix.com/r/imgfx-blend-screen.json"use client";
import { useId } from "react";
export default function ImgfxBlendScreen() {
const uid = useId().replace(/[^a-zA-Z0-9]/g, "");
const prefix = `bscr${uid}`;
return (
<section className="relative w-full overflow-hidden bg-neutral-50 px-6 py-24 sm:px-10 lg:py-32 dark:bg-neutral-950">
<style>{`
.${prefix}-card {
transform: translateZ(0);
}
.${prefix}-wash {
mix-blend-mode: screen;
opacity: 1;
transform: translateY(0) scale(1.02);
transition: opacity 620ms cubic-bezier(0.22, 1, 0.36, 1),
transform 720ms cubic-bezier(0.22, 1, 0.36, 1);
animation: ${prefix}-drift 9s ease-in-out infinite alternate;
}
.${prefix}-card:hover .${prefix}-wash,
.${prefix}-card:focus-within .${prefix}-wash {
opacity: 0;
transform: translateY(-14px) scale(1.08);
}
.${prefix}-img {
transform: scale(1.04);
filter: saturate(1.15);
transition: transform 900ms cubic-bezier(0.22, 1, 0.36, 1),
filter 620ms ease;
}
.${prefix}-card:hover .${prefix}-img,
.${prefix}-card:focus-within .${prefix}-img {
transform: scale(1);
filter: saturate(1);
}
.${prefix}-sheen {
opacity: 0;
transform: translateY(6px);
transition: opacity 420ms ease, transform 520ms cubic-bezier(0.22, 1, 0.36, 1);
}
.${prefix}-card:hover .${prefix}-sheen,
.${prefix}-card:focus-within .${prefix}-sheen {
opacity: 1;
transform: translateY(0);
}
@keyframes ${prefix}-drift {
0% { background-position: 0% 50%; }
100% { background-position: 100% 50%; }
}
@media (prefers-reduced-motion: reduce) {
.${prefix}-wash,
.${prefix}-img,
.${prefix}-sheen {
animation: none !important;
transition: opacity 200ms ease !important;
transform: none !important;
}
}
`}</style>
<div className="mx-auto max-w-5xl">
<div className="mb-12 text-center">
<span className="inline-flex items-center gap-2 rounded-full border border-indigo-200 bg-indigo-50 px-3 py-1 text-xs font-semibold uppercase tracking-[0.18em] text-indigo-700 dark:border-indigo-400/20 dark:bg-indigo-400/10 dark:text-indigo-300">
<span className="h-1.5 w-1.5 rounded-full bg-indigo-500" />
Screen Blend
</span>
<h2 className="mt-5 text-3xl font-semibold tracking-tight text-neutral-900 sm:text-4xl dark:text-neutral-50">
A colour wash that lifts off
</h2>
<p className="mx-auto mt-4 max-w-xl text-base leading-relaxed text-neutral-600 dark:text-neutral-400">
A screen-blended violet-to-amber glow sits over the frame at rest, then
peels away on hover to reveal the photo in full clarity.
</p>
</div>
<figure
tabIndex={0}
className={`${prefix}-card group relative mx-auto aspect-[4/3] w-full max-w-3xl cursor-pointer overflow-hidden rounded-3xl bg-neutral-900 shadow-xl shadow-neutral-900/10 outline-none ring-1 ring-neutral-900/5 focus-visible:ring-2 focus-visible:ring-indigo-500 dark:shadow-black/40 dark:ring-white/10`}
>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src="/img/gallery/g14.webp"
alt="A quiet coastal scene at golden hour, framed for a colour-blend effect"
loading="lazy"
draggable={false}
className={`${prefix}-img absolute inset-0 h-full w-full object-cover`}
/>
<div
className={`${prefix}-wash pointer-events-none absolute inset-0`}
style={{
backgroundImage:
"linear-gradient(115deg, #4c1d95 0%, #7c3aed 34%, #db2777 62%, #f59e0b 100%)",
backgroundSize: "220% 220%",
}}
aria-hidden="true"
/>
<div
className="pointer-events-none absolute inset-0 bg-gradient-to-t from-black/55 via-transparent to-transparent"
aria-hidden="true"
/>
<figcaption
className={`${prefix}-sheen pointer-events-none absolute inset-x-0 bottom-0 p-6 text-left sm:p-8`}
>
<p className="text-sm font-medium text-white/70">Golden Hour, No. 14</p>
<p className="mt-1 text-lg font-semibold text-white">
True colour restored
</p>
</figcaption>
</figure>
<p className="mt-8 text-center text-sm text-neutral-500 dark:text-neutral-500">
Hover or focus the frame — watch the wash drift away.
</p>
</div>
</section>
);
}Dependencies
Licence
Built by Web Innoventix. Free for personal and commercial use, no attribution required.
Built by Web Innoventix
Need a custom interface, a full website, or SEO that gets you cited by AI? We design, build and rank it end to end.
Get a free quoteSimilar components
Browse all →
Hover Zoom Effect
OriginalImage zooms in smoothly inside a fixed rounded frame on hover.

Hover Zoom Out Effect
OriginalImage starts zoomed and settles to normal on hover.

Zoom Rotate Effect
OriginalImage zooms and rotates slightly on hover.

Grayscale Color Effect
OriginalGreyscale image turns to full colour on hover.

Color Grayscale Effect
OriginalFull-colour image fades to greyscale on hover.

Blur Sharp Effect
OriginalBlurred image sharpens on hover.

Sharp Blur Effect
OriginalSharp image blurs with a caption appearing on hover.

Sepia Clear Effect
OriginalSepia-toned image clears to full colour on hover.

Saturate Pop Effect
OriginalMuted image saturates and pops on hover.

Contrast Pop Effect
OriginalLow-contrast image gains punchy contrast on hover.

Brightness Lift Effect
OriginalDim image brightens on hover.

Hue Rotate Effect
OriginalImage hue-shifts through colours on hover.

