Pulse Rings
Concentric emerald pulse rings radiating from center with fade-out animation. Dynamic focal background for product launches, waitlists, and reveal pages. Pure CSS rings, no JavaScript animation loop.
Dependencies
react
npm install react react-domexport function PulseRingsBackground({ children }: { children?: React.ReactNode }) {
return (
<div className="relative min-h-screen overflow-hidden bg-zinc-950">
{[0, 1, 2, 3].map((i) => (
<div
key={i}
className="pointer-events-none absolute left-1/2 top-1/2 h-64 w-64 -translate-x-1/2 -translate-y-1/2 rounded-full border border-emerald-500/30"
style={{ animation: `pulse-ring 3s ease-out ${i * 0.75}s infinite` }}
aria-hidden
/>
))}
<div className="pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_center,rgba(16,185,129,0.08),transparent_50%)]" aria-hidden />
<style>{`@keyframes pulse-ring{0%{transform:translate(-50%,-50%) scale(.6);opacity:.5}100%{transform:translate(-50%,-50%) scale(2.5);opacity:0}}`}</style>
{children && <div className="relative z-10">{children}</div>}
</div>
);
}
Please implement this code in the current project and add it to (Your Desired Section, e.g. homepage hero, pricing page, dashboard). Change the primary accent color to (YOUR HEX CODE COLOR, e.g. #6366F1).
Requirements:
- Use React + Tailwind CSS (match the project's existing setup)
- Install dependencies if needed: npm install react react-dom
- Keep the layout responsive on mobile and desktop
- Replace placeholder copy with content that fits the project
The UI code:
export function PulseRingsBackground({ children }: { children?: React.ReactNode }) {
return (
<div className="relative min-h-screen overflow-hidden bg-zinc-950">
{[0, 1, 2, 3].map((i) => (
<div
key={i}
className="pointer-events-none absolute left-1/2 top-1/2 h-64 w-64 -translate-x-1/2 -translate-y-1/2 rounded-full border border-emerald-500/30"
style={{ animation: `pulse-ring 3s ease-out ${i * 0.75}s infinite` }}
aria-hidden
/>
))}
<div className="pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_center,rgba(16,185,129,0.08),transparent_50%)]" aria-hidden />
<style>{`@keyframes pulse-ring{0%{transform:translate(-50%,-50%) scale(.6);opacity:.5}100%{transform:translate(-50%,-50%) scale(2.5);opacity:0}}`}</style>
{children && <div className="relative z-10">{children}</div>}
</div>
);
}
Replace (Your Desired Section) and (YOUR HEX CODE COLOR) before pasting into Cursor, Copilot, or ChatGPT.