12 CSS Ripple Effects04 / 12
CSS Neon Glow Ripple Effect
Six neon-core ripple emitters on a dark grid: magenta, cyan, lime, orange, electric-blue and plasma-white — each a 24px glowing core with four rings that scale from 0 to 100% with staggered delays, box-shadow neon glow and color-matched hues. Orbitron + Rajdhani on a near-black #050008 background.
Published
This is a full-page demo — interact inside the frame above, or open it in the playground for the full-screen experience.
The code
<div class="rpl-04">
<div class="rpl-04__title">Neon Glow Ripple Effects</div>
<div class="rpl-04__stage">
<!-- MAGENTA -->
<div class="rpl-04__node rpl-04__node--mag">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Magenta</div>
</div>
<!-- CYAN -->
<div class="rpl-04__node rpl-04__node--cyn">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Cyan</div>
</div>
<!-- LIME -->
<div class="rpl-04__node rpl-04__node--lim">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Lime</div>
</div>
<!-- ORANGE -->
<div class="rpl-04__node rpl-04__node--org">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Orange</div>
</div>
<!-- BLUE -->
<div class="rpl-04__node rpl-04__node--blu">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Electric</div>
</div>
<!-- WHITE -->
<div class="rpl-04__node rpl-04__node--wht">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Plasma</div>
</div>
</div>
<div class="rpl-04__hero">
<h2>CSS box-shadow glow · keyframe scale</h2>
<p>Every ring is a single div, scaled from 0 to 1 with a staggered delay. The neon glow comes from layered box-shadow — no SVG filters required.</p>
</div>
</div><div class="rpl-04">
<div class="rpl-04__title">Neon Glow Ripple Effects</div>
<div class="rpl-04__stage">
<!-- MAGENTA -->
<div class="rpl-04__node rpl-04__node--mag">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Magenta</div>
</div>
<!-- CYAN -->
<div class="rpl-04__node rpl-04__node--cyn">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Cyan</div>
</div>
<!-- LIME -->
<div class="rpl-04__node rpl-04__node--lim">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Lime</div>
</div>
<!-- ORANGE -->
<div class="rpl-04__node rpl-04__node--org">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Orange</div>
</div>
<!-- BLUE -->
<div class="rpl-04__node rpl-04__node--blu">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Electric</div>
</div>
<!-- WHITE -->
<div class="rpl-04__node rpl-04__node--wht">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Plasma</div>
</div>
</div>
<div class="rpl-04__hero">
<h2>CSS box-shadow glow · keyframe scale</h2>
<p>Every ring is a single div, scaled from 0 to 1 with a staggered delay. The neon glow comes from layered box-shadow — no SVG filters required.</p>
</div>
</div>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;600&display=swap');
.rpl-04,
.rpl-04 *,
.rpl-04 *::before,
.rpl-04 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.rpl-04 ::selection {
background: #f0ff00;
color: #0a0010;
}
.rpl-04 {
font-family: 'Rajdhani', sans-serif;
background: #050008;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 60px;
padding: 60px 24px;
color: #e8e0ff;
overflow: hidden;
position: relative;
}
/* Subtle grid */
.rpl-04::before {
content: '';
position: absolute;
inset: 0;
background-image: linear-gradient(rgba(160,80,255,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(160,80,255,0.06) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
}
.rpl-04__title {
font-family: 'Orbitron';
font-size: clamp(1.4rem, 4vw, 2.4rem);
font-weight: 900;
text-align: center;
letter-spacing: 0.08em;
background: linear-gradient(135deg, #ff00ff, #a000ff, #00ffff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 0 20px rgba(160,0,255,0.5));
z-index: 2;
}
/* ─── Main neon ripple display ─── */
.rpl-04__stage {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 40px;
z-index: 2;
width: min(900px, 100%);
}
@media (max-width: 640px) {
.rpl-04__stage {
grid-template-columns: repeat(2, 1fr);
gap: 28px;
}
}
@media (max-width: 420px) {
.rpl-04__stage {
grid-template-columns: 1fr;
}
}
.rpl-04__node {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.rpl-04__ripple-wrap {
position: relative;
width: 120px;
height: 120px;
display: grid;
place-items: center;
}
/* Center core */
.rpl-04__core {
position: absolute;
border-radius: 50%;
z-index: 2;
}
/* Neon rings — 4 per node */
.rpl-04__ring {
position: absolute;
border-radius: 50%;
transform: scale(0);
inset: 0;
animation: rpl-04-glow 3s ease-out infinite;
}
/* MAGENTA node */
.rpl-04__node--mag .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ff80ff, #ff00cc);
box-shadow: 0 0 20px #ff00cc, 0 0 40px rgba(255,0,204,0.5);
}
.rpl-04__node--mag .rpl-04__ring {
border: 1.5px solid #ff00cc;
box-shadow: 0 0 8px #ff00cc;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(2) {
animation-delay: 0.6s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(3) {
animation-delay: 1.2s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(4) {
animation-delay: 1.8s;
}
/* CYAN node */
.rpl-04__node--cyn .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80ffff, #00ffee);
box-shadow: 0 0 20px #00ffee, 0 0 40px rgba(0,255,238,0.5);
}
.rpl-04__node--cyn .rpl-04__ring {
border: 1.5px solid #00ffee;
box-shadow: 0 0 8px #00ffee;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(2) {
animation-delay: 0.5s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(3) {
animation-delay: 1.0s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(4) {
animation-delay: 1.5s;
}
/* YELLOW-GREEN node */
.rpl-04__node--lim .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #eeff80, #aaff00);
box-shadow: 0 0 20px #aaff00, 0 0 40px rgba(170,255,0,0.5);
}
.rpl-04__node--lim .rpl-04__ring {
border: 1.5px solid #aaff00;
box-shadow: 0 0 8px #aaff00;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(2) {
animation-delay: 0.7s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(3) {
animation-delay: 1.4s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(4) {
animation-delay: 2.1s;
}
/* ORANGE node */
.rpl-04__node--org .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ffcc80, #ff6600);
box-shadow: 0 0 20px #ff6600, 0 0 40px rgba(255,102,0,0.5);
}
.rpl-04__node--org .rpl-04__ring {
border: 1.5px solid #ff6600;
box-shadow: 0 0 8px #ff6600;
}
.rpl-04__node--org .rpl-04__ring:nth-child(2) {
animation-delay: 0.55s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(3) {
animation-delay: 1.1s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(4) {
animation-delay: 1.65s;
}
/* BLUE node */
.rpl-04__node--blu .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80b0ff, #0055ff);
box-shadow: 0 0 20px #0055ff, 0 0 40px rgba(0,85,255,0.5);
}
.rpl-04__node--blu .rpl-04__ring {
border: 1.5px solid #4488ff;
box-shadow: 0 0 8px #4488ff;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(2) {
animation-delay: 0.65s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(3) {
animation-delay: 1.3s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(4) {
animation-delay: 1.95s;
}
/* WHITE/PURPLE node */
.rpl-04__node--wht .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #fff, #cc88ff);
box-shadow: 0 0 20px #fff, 0 0 40px rgba(200,136,255,0.6);
}
.rpl-04__node--wht .rpl-04__ring {
border: 1.5px solid rgba(220,180,255,0.9);
box-shadow: 0 0 8px rgba(220,180,255,0.7);
}
.rpl-04__node--wht .rpl-04__ring:nth-child(2) {
animation-delay: 0.4s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(3) {
animation-delay: 0.8s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(4) {
animation-delay: 1.2s;
}
@keyframes rpl-04-glow {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0;
}
}
.rpl-04__label {
font-family: 'Orbitron';
font-size: 0.62rem;
letter-spacing: 0.18em;
text-transform: uppercase;
opacity: 0.55;
}
/* Bottom hero text */
.rpl-04__hero {
text-align: center;
z-index: 2;
max-width: 560px;
}
.rpl-04__hero h2 {
font-family: 'Orbitron';
font-size: clamp(0.8rem, 2vw, 1.1rem);
font-weight: 400;
letter-spacing: 0.25em;
text-transform: uppercase;
color: rgba(232,224,255,0.5);
margin-bottom: 10px;
}
.rpl-04__hero p {
font-size: 1rem;
color: rgba(232,224,255,0.4);
line-height: 1.6;
font-weight: 300;
}
@media (prefers-reduced-motion: reduce) {
.rpl-04__ring {
animation: none !important;
opacity: 0.15;
}
}@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;600&display=swap');
.rpl-04,
.rpl-04 *,
.rpl-04 *::before,
.rpl-04 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.rpl-04 ::selection {
background: #f0ff00;
color: #0a0010;
}
.rpl-04 {
font-family: 'Rajdhani', sans-serif;
background: #050008;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 60px;
padding: 60px 24px;
color: #e8e0ff;
overflow: hidden;
position: relative;
}
/* Subtle grid */
.rpl-04::before {
content: '';
position: absolute;
inset: 0;
background-image: linear-gradient(rgba(160,80,255,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(160,80,255,0.06) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
}
.rpl-04__title {
font-family: 'Orbitron';
font-size: clamp(1.4rem, 4vw, 2.4rem);
font-weight: 900;
text-align: center;
letter-spacing: 0.08em;
background: linear-gradient(135deg, #ff00ff, #a000ff, #00ffff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 0 20px rgba(160,0,255,0.5));
z-index: 2;
}
/* ─── Main neon ripple display ─── */
.rpl-04__stage {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 40px;
z-index: 2;
width: min(900px, 100%);
}
@media (max-width: 640px) {
.rpl-04__stage {
grid-template-columns: repeat(2, 1fr);
gap: 28px;
}
}
@media (max-width: 420px) {
.rpl-04__stage {
grid-template-columns: 1fr;
}
}
.rpl-04__node {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.rpl-04__ripple-wrap {
position: relative;
width: 120px;
height: 120px;
display: grid;
place-items: center;
}
/* Center core */
.rpl-04__core {
position: absolute;
border-radius: 50%;
z-index: 2;
}
/* Neon rings — 4 per node */
.rpl-04__ring {
position: absolute;
border-radius: 50%;
transform: scale(0);
inset: 0;
animation: rpl-04-glow 3s ease-out infinite;
}
/* MAGENTA node */
.rpl-04__node--mag .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ff80ff, #ff00cc);
box-shadow: 0 0 20px #ff00cc, 0 0 40px rgba(255,0,204,0.5);
}
.rpl-04__node--mag .rpl-04__ring {
border: 1.5px solid #ff00cc;
box-shadow: 0 0 8px #ff00cc;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(2) {
animation-delay: 0.6s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(3) {
animation-delay: 1.2s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(4) {
animation-delay: 1.8s;
}
/* CYAN node */
.rpl-04__node--cyn .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80ffff, #00ffee);
box-shadow: 0 0 20px #00ffee, 0 0 40px rgba(0,255,238,0.5);
}
.rpl-04__node--cyn .rpl-04__ring {
border: 1.5px solid #00ffee;
box-shadow: 0 0 8px #00ffee;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(2) {
animation-delay: 0.5s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(3) {
animation-delay: 1.0s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(4) {
animation-delay: 1.5s;
}
/* YELLOW-GREEN node */
.rpl-04__node--lim .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #eeff80, #aaff00);
box-shadow: 0 0 20px #aaff00, 0 0 40px rgba(170,255,0,0.5);
}
.rpl-04__node--lim .rpl-04__ring {
border: 1.5px solid #aaff00;
box-shadow: 0 0 8px #aaff00;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(2) {
animation-delay: 0.7s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(3) {
animation-delay: 1.4s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(4) {
animation-delay: 2.1s;
}
/* ORANGE node */
.rpl-04__node--org .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ffcc80, #ff6600);
box-shadow: 0 0 20px #ff6600, 0 0 40px rgba(255,102,0,0.5);
}
.rpl-04__node--org .rpl-04__ring {
border: 1.5px solid #ff6600;
box-shadow: 0 0 8px #ff6600;
}
.rpl-04__node--org .rpl-04__ring:nth-child(2) {
animation-delay: 0.55s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(3) {
animation-delay: 1.1s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(4) {
animation-delay: 1.65s;
}
/* BLUE node */
.rpl-04__node--blu .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80b0ff, #0055ff);
box-shadow: 0 0 20px #0055ff, 0 0 40px rgba(0,85,255,0.5);
}
.rpl-04__node--blu .rpl-04__ring {
border: 1.5px solid #4488ff;
box-shadow: 0 0 8px #4488ff;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(2) {
animation-delay: 0.65s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(3) {
animation-delay: 1.3s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(4) {
animation-delay: 1.95s;
}
/* WHITE/PURPLE node */
.rpl-04__node--wht .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #fff, #cc88ff);
box-shadow: 0 0 20px #fff, 0 0 40px rgba(200,136,255,0.6);
}
.rpl-04__node--wht .rpl-04__ring {
border: 1.5px solid rgba(220,180,255,0.9);
box-shadow: 0 0 8px rgba(220,180,255,0.7);
}
.rpl-04__node--wht .rpl-04__ring:nth-child(2) {
animation-delay: 0.4s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(3) {
animation-delay: 0.8s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(4) {
animation-delay: 1.2s;
}
@keyframes rpl-04-glow {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0;
}
}
.rpl-04__label {
font-family: 'Orbitron';
font-size: 0.62rem;
letter-spacing: 0.18em;
text-transform: uppercase;
opacity: 0.55;
}
/* Bottom hero text */
.rpl-04__hero {
text-align: center;
z-index: 2;
max-width: 560px;
}
.rpl-04__hero h2 {
font-family: 'Orbitron';
font-size: clamp(0.8rem, 2vw, 1.1rem);
font-weight: 400;
letter-spacing: 0.25em;
text-transform: uppercase;
color: rgba(232,224,255,0.5);
margin-bottom: 10px;
}
.rpl-04__hero p {
font-size: 1rem;
color: rgba(232,224,255,0.4);
line-height: 1.6;
font-weight: 300;
}
@media (prefers-reduced-motion: reduce) {
.rpl-04__ring {
animation: none !important;
opacity: 0.15;
}
}Here's a working CSS Ripple Effect from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: CSS Neon Glow Ripple Effect
Source: https://codefronts.com/motion/css-ripple-designs/css-neon-glow-ripple-effect/
Six neon-core ripple emitters on a dark grid: magenta, cyan, lime, orange, electric-blue and plasma-white — each a 24px glowing core with four rings that scale from 0 to 100% with staggered delays, box-shadow neon glow and color-matched hues. Orbitron + Rajdhani on a near-black #050008 background.
## HTML
```html
<div class="rpl-04">
<div class="rpl-04__title">Neon Glow Ripple Effects</div>
<div class="rpl-04__stage">
<!-- MAGENTA -->
<div class="rpl-04__node rpl-04__node--mag">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Magenta</div>
</div>
<!-- CYAN -->
<div class="rpl-04__node rpl-04__node--cyn">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Cyan</div>
</div>
<!-- LIME -->
<div class="rpl-04__node rpl-04__node--lim">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Lime</div>
</div>
<!-- ORANGE -->
<div class="rpl-04__node rpl-04__node--org">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Orange</div>
</div>
<!-- BLUE -->
<div class="rpl-04__node rpl-04__node--blu">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Electric</div>
</div>
<!-- WHITE -->
<div class="rpl-04__node rpl-04__node--wht">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Plasma</div>
</div>
</div>
<div class="rpl-04__hero">
<h2>CSS box-shadow glow · keyframe scale</h2>
<p>Every ring is a single div, scaled from 0 to 1 with a staggered delay. The neon glow comes from layered box-shadow — no SVG filters required.</p>
</div>
</div>
```
## CSS
```css
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;600&display=swap');
.rpl-04,
.rpl-04 *,
.rpl-04 *::before,
.rpl-04 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.rpl-04 ::selection {
background: #f0ff00;
color: #0a0010;
}
.rpl-04 {
font-family: 'Rajdhani', sans-serif;
background: #050008;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 60px;
padding: 60px 24px;
color: #e8e0ff;
overflow: hidden;
position: relative;
}
/* Subtle grid */
.rpl-04::before {
content: '';
position: absolute;
inset: 0;
background-image: linear-gradient(rgba(160,80,255,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(160,80,255,0.06) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
}
.rpl-04__title {
font-family: 'Orbitron';
font-size: clamp(1.4rem, 4vw, 2.4rem);
font-weight: 900;
text-align: center;
letter-spacing: 0.08em;
background: linear-gradient(135deg, #ff00ff, #a000ff, #00ffff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 0 20px rgba(160,0,255,0.5));
z-index: 2;
}
/* ─── Main neon ripple display ─── */
.rpl-04__stage {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 40px;
z-index: 2;
width: min(900px, 100%);
}
@media (max-width: 640px) {
.rpl-04__stage {
grid-template-columns: repeat(2, 1fr);
gap: 28px;
}
}
@media (max-width: 420px) {
.rpl-04__stage {
grid-template-columns: 1fr;
}
}
.rpl-04__node {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.rpl-04__ripple-wrap {
position: relative;
width: 120px;
height: 120px;
display: grid;
place-items: center;
}
/* Center core */
.rpl-04__core {
position: absolute;
border-radius: 50%;
z-index: 2;
}
/* Neon rings — 4 per node */
.rpl-04__ring {
position: absolute;
border-radius: 50%;
transform: scale(0);
inset: 0;
animation: rpl-04-glow 3s ease-out infinite;
}
/* MAGENTA node */
.rpl-04__node--mag .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ff80ff, #ff00cc);
box-shadow: 0 0 20px #ff00cc, 0 0 40px rgba(255,0,204,0.5);
}
.rpl-04__node--mag .rpl-04__ring {
border: 1.5px solid #ff00cc;
box-shadow: 0 0 8px #ff00cc;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(2) {
animation-delay: 0.6s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(3) {
animation-delay: 1.2s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(4) {
animation-delay: 1.8s;
}
/* CYAN node */
.rpl-04__node--cyn .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80ffff, #00ffee);
box-shadow: 0 0 20px #00ffee, 0 0 40px rgba(0,255,238,0.5);
}
.rpl-04__node--cyn .rpl-04__ring {
border: 1.5px solid #00ffee;
box-shadow: 0 0 8px #00ffee;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(2) {
animation-delay: 0.5s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(3) {
animation-delay: 1.0s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(4) {
animation-delay: 1.5s;
}
/* YELLOW-GREEN node */
.rpl-04__node--lim .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #eeff80, #aaff00);
box-shadow: 0 0 20px #aaff00, 0 0 40px rgba(170,255,0,0.5);
}
.rpl-04__node--lim .rpl-04__ring {
border: 1.5px solid #aaff00;
box-shadow: 0 0 8px #aaff00;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(2) {
animation-delay: 0.7s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(3) {
animation-delay: 1.4s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(4) {
animation-delay: 2.1s;
}
/* ORANGE node */
.rpl-04__node--org .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ffcc80, #ff6600);
box-shadow: 0 0 20px #ff6600, 0 0 40px rgba(255,102,0,0.5);
}
.rpl-04__node--org .rpl-04__ring {
border: 1.5px solid #ff6600;
box-shadow: 0 0 8px #ff6600;
}
.rpl-04__node--org .rpl-04__ring:nth-child(2) {
animation-delay: 0.55s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(3) {
animation-delay: 1.1s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(4) {
animation-delay: 1.65s;
}
/* BLUE node */
.rpl-04__node--blu .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80b0ff, #0055ff);
box-shadow: 0 0 20px #0055ff, 0 0 40px rgba(0,85,255,0.5);
}
.rpl-04__node--blu .rpl-04__ring {
border: 1.5px solid #4488ff;
box-shadow: 0 0 8px #4488ff;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(2) {
animation-delay: 0.65s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(3) {
animation-delay: 1.3s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(4) {
animation-delay: 1.95s;
}
/* WHITE/PURPLE node */
.rpl-04__node--wht .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #fff, #cc88ff);
box-shadow: 0 0 20px #fff, 0 0 40px rgba(200,136,255,0.6);
}
.rpl-04__node--wht .rpl-04__ring {
border: 1.5px solid rgba(220,180,255,0.9);
box-shadow: 0 0 8px rgba(220,180,255,0.7);
}
.rpl-04__node--wht .rpl-04__ring:nth-child(2) {
animation-delay: 0.4s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(3) {
animation-delay: 0.8s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(4) {
animation-delay: 1.2s;
}
@keyframes rpl-04-glow {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0;
}
}
.rpl-04__label {
font-family: 'Orbitron';
font-size: 0.62rem;
letter-spacing: 0.18em;
text-transform: uppercase;
opacity: 0.55;
}
/* Bottom hero text */
.rpl-04__hero {
text-align: center;
z-index: 2;
max-width: 560px;
}
.rpl-04__hero h2 {
font-family: 'Orbitron';
font-size: clamp(0.8rem, 2vw, 1.1rem);
font-weight: 400;
letter-spacing: 0.25em;
text-transform: uppercase;
color: rgba(232,224,255,0.5);
margin-bottom: 10px;
}
.rpl-04__hero p {
font-size: 1rem;
color: rgba(232,224,255,0.4);
line-height: 1.6;
font-weight: 300;
}
@media (prefers-reduced-motion: reduce) {
.rpl-04__ring {
animation: none !important;
opacity: 0.15;
}
}
```Paste this into ChatGPT, Claude, Cursor, or any coding assistant. The block below is pre-framed with everything the AI needs to integrate this demo into your project — markup, styles, scoping notes, and the source URL. Hit Copy and paste straight into your chat.
Here's a working CSS Ripple Effect from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: CSS Neon Glow Ripple Effect
Source: https://codefronts.com/motion/css-ripple-designs/css-neon-glow-ripple-effect/
Six neon-core ripple emitters on a dark grid: magenta, cyan, lime, orange, electric-blue and plasma-white — each a 24px glowing core with four rings that scale from 0 to 100% with staggered delays, box-shadow neon glow and color-matched hues. Orbitron + Rajdhani on a near-black #050008 background.
## HTML
```html
<div class="rpl-04">
<div class="rpl-04__title">Neon Glow Ripple Effects</div>
<div class="rpl-04__stage">
<!-- MAGENTA -->
<div class="rpl-04__node rpl-04__node--mag">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Magenta</div>
</div>
<!-- CYAN -->
<div class="rpl-04__node rpl-04__node--cyn">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Cyan</div>
</div>
<!-- LIME -->
<div class="rpl-04__node rpl-04__node--lim">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Lime</div>
</div>
<!-- ORANGE -->
<div class="rpl-04__node rpl-04__node--org">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Orange</div>
</div>
<!-- BLUE -->
<div class="rpl-04__node rpl-04__node--blu">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Electric</div>
</div>
<!-- WHITE -->
<div class="rpl-04__node rpl-04__node--wht">
<div class="rpl-04__ripple-wrap">
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__ring"></div>
<div class="rpl-04__core"></div>
</div>
<div class="rpl-04__label">Plasma</div>
</div>
</div>
<div class="rpl-04__hero">
<h2>CSS box-shadow glow · keyframe scale</h2>
<p>Every ring is a single div, scaled from 0 to 1 with a staggered delay. The neon glow comes from layered box-shadow — no SVG filters required.</p>
</div>
</div>
```
## CSS
```css
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;600&display=swap');
.rpl-04,
.rpl-04 *,
.rpl-04 *::before,
.rpl-04 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.rpl-04 ::selection {
background: #f0ff00;
color: #0a0010;
}
.rpl-04 {
font-family: 'Rajdhani', sans-serif;
background: #050008;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 60px;
padding: 60px 24px;
color: #e8e0ff;
overflow: hidden;
position: relative;
}
/* Subtle grid */
.rpl-04::before {
content: '';
position: absolute;
inset: 0;
background-image: linear-gradient(rgba(160,80,255,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(160,80,255,0.06) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
}
.rpl-04__title {
font-family: 'Orbitron';
font-size: clamp(1.4rem, 4vw, 2.4rem);
font-weight: 900;
text-align: center;
letter-spacing: 0.08em;
background: linear-gradient(135deg, #ff00ff, #a000ff, #00ffff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 0 20px rgba(160,0,255,0.5));
z-index: 2;
}
/* ─── Main neon ripple display ─── */
.rpl-04__stage {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 40px;
z-index: 2;
width: min(900px, 100%);
}
@media (max-width: 640px) {
.rpl-04__stage {
grid-template-columns: repeat(2, 1fr);
gap: 28px;
}
}
@media (max-width: 420px) {
.rpl-04__stage {
grid-template-columns: 1fr;
}
}
.rpl-04__node {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.rpl-04__ripple-wrap {
position: relative;
width: 120px;
height: 120px;
display: grid;
place-items: center;
}
/* Center core */
.rpl-04__core {
position: absolute;
border-radius: 50%;
z-index: 2;
}
/* Neon rings — 4 per node */
.rpl-04__ring {
position: absolute;
border-radius: 50%;
transform: scale(0);
inset: 0;
animation: rpl-04-glow 3s ease-out infinite;
}
/* MAGENTA node */
.rpl-04__node--mag .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ff80ff, #ff00cc);
box-shadow: 0 0 20px #ff00cc, 0 0 40px rgba(255,0,204,0.5);
}
.rpl-04__node--mag .rpl-04__ring {
border: 1.5px solid #ff00cc;
box-shadow: 0 0 8px #ff00cc;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(2) {
animation-delay: 0.6s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(3) {
animation-delay: 1.2s;
}
.rpl-04__node--mag .rpl-04__ring:nth-child(4) {
animation-delay: 1.8s;
}
/* CYAN node */
.rpl-04__node--cyn .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80ffff, #00ffee);
box-shadow: 0 0 20px #00ffee, 0 0 40px rgba(0,255,238,0.5);
}
.rpl-04__node--cyn .rpl-04__ring {
border: 1.5px solid #00ffee;
box-shadow: 0 0 8px #00ffee;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(2) {
animation-delay: 0.5s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(3) {
animation-delay: 1.0s;
}
.rpl-04__node--cyn .rpl-04__ring:nth-child(4) {
animation-delay: 1.5s;
}
/* YELLOW-GREEN node */
.rpl-04__node--lim .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #eeff80, #aaff00);
box-shadow: 0 0 20px #aaff00, 0 0 40px rgba(170,255,0,0.5);
}
.rpl-04__node--lim .rpl-04__ring {
border: 1.5px solid #aaff00;
box-shadow: 0 0 8px #aaff00;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(2) {
animation-delay: 0.7s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(3) {
animation-delay: 1.4s;
}
.rpl-04__node--lim .rpl-04__ring:nth-child(4) {
animation-delay: 2.1s;
}
/* ORANGE node */
.rpl-04__node--org .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #ffcc80, #ff6600);
box-shadow: 0 0 20px #ff6600, 0 0 40px rgba(255,102,0,0.5);
}
.rpl-04__node--org .rpl-04__ring {
border: 1.5px solid #ff6600;
box-shadow: 0 0 8px #ff6600;
}
.rpl-04__node--org .rpl-04__ring:nth-child(2) {
animation-delay: 0.55s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(3) {
animation-delay: 1.1s;
}
.rpl-04__node--org .rpl-04__ring:nth-child(4) {
animation-delay: 1.65s;
}
/* BLUE node */
.rpl-04__node--blu .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #80b0ff, #0055ff);
box-shadow: 0 0 20px #0055ff, 0 0 40px rgba(0,85,255,0.5);
}
.rpl-04__node--blu .rpl-04__ring {
border: 1.5px solid #4488ff;
box-shadow: 0 0 8px #4488ff;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(2) {
animation-delay: 0.65s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(3) {
animation-delay: 1.3s;
}
.rpl-04__node--blu .rpl-04__ring:nth-child(4) {
animation-delay: 1.95s;
}
/* WHITE/PURPLE node */
.rpl-04__node--wht .rpl-04__core {
width: 24px;
height: 24px;
background: radial-gradient(circle at 35% 30%, #fff, #cc88ff);
box-shadow: 0 0 20px #fff, 0 0 40px rgba(200,136,255,0.6);
}
.rpl-04__node--wht .rpl-04__ring {
border: 1.5px solid rgba(220,180,255,0.9);
box-shadow: 0 0 8px rgba(220,180,255,0.7);
}
.rpl-04__node--wht .rpl-04__ring:nth-child(2) {
animation-delay: 0.4s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(3) {
animation-delay: 0.8s;
}
.rpl-04__node--wht .rpl-04__ring:nth-child(4) {
animation-delay: 1.2s;
}
@keyframes rpl-04-glow {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0;
}
}
.rpl-04__label {
font-family: 'Orbitron';
font-size: 0.62rem;
letter-spacing: 0.18em;
text-transform: uppercase;
opacity: 0.55;
}
/* Bottom hero text */
.rpl-04__hero {
text-align: center;
z-index: 2;
max-width: 560px;
}
.rpl-04__hero h2 {
font-family: 'Orbitron';
font-size: clamp(0.8rem, 2vw, 1.1rem);
font-weight: 400;
letter-spacing: 0.25em;
text-transform: uppercase;
color: rgba(232,224,255,0.5);
margin-bottom: 10px;
}
.rpl-04__hero p {
font-size: 1rem;
color: rgba(232,224,255,0.4);
line-height: 1.6;
font-weight: 300;
}
@media (prefers-reduced-motion: reduce) {
.rpl-04__ring {
animation: none !important;
opacity: 0.15;
}
}
```