CSS Ripple Button Effects

Explore creative CSS Ripple Button animations with live preview and copy-ready code for your projects.

<button class="pulse-button">Get Started</button> .pulse-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #007bff; /* Blue Color */ border: none; border-radius: 50px; /* Rounded pill shape */ cursor: pointer; position: relative; outline: none; transition: all 0.3s ease; /* Smooth transition */ /* Initial subtle glow */ box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7); /* Animation apply karna */ animation: pulse-animation 2s infinite; } /* Hover par thora sa change */ .pulse-button:hover { background-color: #0056b3; transform: scale(1.05); /* Thora sa bara hona */ } /* Pulse Animation ki logic */ @keyframes pulse-animation { 0% { box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7); } 70% { /* Roshni ka phailna (spread) */ box-shadow: 0 0 0 20px rgba(0, 123, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 123, 255, 0); } }
<button class="ripple-button">Get Started</button> .ripple-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #6c5ce7; /* Purple */ border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; /* Ripple hide outside */ transition: all 0.3s ease; } /* Hover par button thora scale ho */ .ripple-button:hover { transform: scale(1.05); } /* Ripple element */ .ripple-button::before { content: ""; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: rgba(255,255,255,0.4); border-radius: 50%; transform: translate(-50%, -50%); transition: width 0.6s ease, height 0.6s ease; } /* Hover par ripple expand */ .ripple-button:hover::before { width: 300px; height: 300px; }
<button class="ripple-button">Get Started</button> .ripple-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #007bff; /* Blue */ border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; outline: none; transition: all 0.3s ease; } /* Hover effect */ .ripple-button:hover { background-color: #0056b3; transform: scale(1.05); } /* Ripple circle */ .ripple-button::after{ content:""; position:absolute; top:50%; left:50%; width:20px; height:20px; background:rgba(255,255,255,0.6); border-radius:50%; transform:translate(-50%,-50%) scale(0); opacity:0; } /* CLICK par ripple run */ .ripple-button:active::after{ animation:ripple-animation 0.6s linear; } /* Ripple animation */ @keyframes ripple-animation{ 0%{ transform:translate(-50%,-50%) scale(0); opacity:0.7; } 70%{ transform:translate(-50%,-50%) scale(4); opacity:0.3; } 100%{ transform:translate(-50%,-50%) scale(5); opacity:0; } }
<button class="ripple-button">Get Started</button> .ripple-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #6f42c1; border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; transition: all 0.3s ease; } /* Hover effect */ .ripple-button:hover { background-color: #5936a2; transform: scale(1.05); } /* Ripple circle */ .ripple-button::after { content: ""; position: absolute; left: 50%; top: 50%; width: 0; height: 0; background: rgba(255,255,255,0.4); border-radius: 50%; transform: translate(-50%, -50%); opacity: 0; } /* Ripple animation trigger */ .ripple-button:active::after { animation: rippleFade 0.6s ease-out; } /* Animation */ @keyframes rippleFade { 0% { width: 0; height: 0; opacity: 0.6; } 50% { width: 200px; height: 200px; opacity: 0.4; } 100% { width: 400px; height: 400px; opacity: 0; } }
<button class="neon-ripple-btn">Click Me</button> .neon-ripple-btn{ padding:16px 40px; font-size:18px; color:#0ff; background:#111; border:none; border-radius:50px; cursor:pointer; position:relative; overflow:hidden; letter-spacing:1px; box-shadow:0 0 10px #0ff; transition:0.3s; } /* Hover glow */ .neon-ripple-btn:hover{ color:white; box-shadow:0 0 20px #0ff,0 0 40px #0ff; } /* Ripple circle */ .neon-ripple-btn::before{ content:""; position:absolute; width:0; height:0; border-radius:50%; background:rgba(0,255,255,0.4); top:50%; left:50%; transform:translate(-50%,-50%); opacity:0; } /* CLICK par ripple run */ .neon-ripple-btn:active::before{ animation:neonRipple 0.8s ease-out; } /* Ripple animation */ @keyframes neonRipple{ 0%{ width:0; height:0; opacity:0.9; } 70%{ width:220%; height:220%; opacity:0.3; } 100%{ width:220%; height:220%; opacity:0; } }
<button class="water-ripple-btn">Get Started</button> .water-ripple-btn{ padding:15px 35px; font-size:18px; font-weight:bold; color:white; background:#007bff; border:none; border-radius:50px; cursor:pointer; position:relative; overflow:hidden; outline:none; transition:all 0.3s ease; } /* Hover effect */ .water-ripple-btn:hover{ background:#0056b3; transform:scale(1.05); } /* Water ripple circles */ .water-ripple-btn::before, .water-ripple-btn::after{ content:""; position:absolute; top:50%; left:50%; width:20px; height:20px; border-radius:50%; border:2px solid rgba(255,255,255,0.6); transform:translate(-50%,-50%) scale(0); opacity:0; } /* CLICK par animation run */ .water-ripple-btn:active::before{ animation:waterRipple 0.8s ease-out; } .water-ripple-btn:active::after{ animation:waterRipple 0.8s ease-out 0.2s; } /* Ripple animation */ @keyframes waterRipple{ 0%{ transform:translate(-50%,-50%) scale(0); opacity:0.8; } 70%{ transform:translate(-50%,-50%) scale(6); opacity:0.3; } 100%{ transform:translate(-50%,-50%) scale(8); opacity:0; } }
<button class="pulse-button">Get Started</button> .pulse-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #007bff; border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; outline: none; transition: all 0.3s ease; } /* Hover */ .pulse-button:hover { background-color: #0056b3; transform: scale(1.05); } /* Explosion ring */ .pulse-button::before{ content:""; position:absolute; top:50%; left:50%; width:10px; height:10px; border-radius:50%; border:3px solid rgba(255,255,255,0.8); transform:translate(-50%,-50%) scale(0); opacity:0; } /* Small particles */ .pulse-button::after{ content:""; position:absolute; top:50%; left:50%; width:6px; height:6px; border-radius:50%; background:white; transform:translate(-50%,-50%); box-shadow: 0 -15px white, 0 15px white, 15px 0 white, -15px 0 white, 10px 10px white, -10px -10px white, 10px -10px white, -10px 10px white; opacity:0; } /* Click par animation */ .pulse-button:active::before{ animation:ring-explode 0.6s ease-out; } .pulse-button:active::after{ animation:particle-burst 0.6s ease-out; } /* Ring expand */ @keyframes ring-explode{ 0%{ transform:translate(-50%,-50%) scale(0); opacity:1; } 100%{ transform:translate(-50%,-50%) scale(6); opacity:0; } } /* Particle burst */ @keyframes particle-burst{ 0%{ transform:translate(-50%,-50%) scale(0.5); opacity:1; } 100%{ transform:translate(-50%,-50%) scale(2); opacity:0; } }
<button class="pulse-button">Get Started</button> .pulse-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #007bff; /* Blue Color */ border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; outline: none; transition: all 0.3s ease; } /* Hover effect */ .pulse-button:hover { background-color: #0056b3; transform: scale(1.05); } /* Glow ripple */ .pulse-button::before{ content:""; position:absolute; top:50%; left:50%; width:20px; height:20px; border-radius:50%; background:rgba(255,255,255,0.5); transform:translate(-50%,-50%) scale(0); opacity:0; box-shadow: 0 0 10px rgba(255,255,255,0.8), 0 0 20px rgba(255,255,255,0.6), 0 0 40px rgba(255,255,255,0.4); } /* Click par glow ripple */ .pulse-button:active::before{ animation:ripple-glow 0.7s ease-out; } /* Animation */ @keyframes ripple-glow { 0%{ transform:translate(-50%,-50%) scale(0); opacity:0.9; } 70%{ transform:translate(-50%,-50%) scale(4); opacity:0.4; } 100%{ transform:translate(-50%,-50%) scale(6); opacity:0; } }
<button class="ripple-fadein-button">Get Started</button> .ripple-fadein-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #1E90FF; border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; transition: all 0.3s ease; } /* Hover */ .ripple-fadein-button:hover { background-color: #1E90FF; transform: scale(1.05); } /* Ripple layer */ .ripple-fadein-button::after { content: ""; position: absolute; left: 50%; top: 50%; width: 0; height: 0; background: rgba(255,255,255,0.35); border-radius: 50%; transform: translate(-50%, -50%); opacity: 0; } /* Trigger animation */ .ripple-fadein-button:active::after { animation: rippleFadeIn 0.6s ease-out; } /* Animation */ @keyframes rippleFadeIn { 0% { width: 0; height: 0; opacity: 0; } 50% { width: 200px; height: 200px; opacity: 0.5; } 100% { width: 400px; height: 400px; opacity: 0.8; } }
<button class="ripple-fadein-button">Get Started</button> .ripple-fadein-button { padding: 15px 35px; font-size: 18px; font-weight: bold; color: white; background-color: #1E90FF; border: none; border-radius: 50px; cursor: pointer; position: relative; overflow: hidden; transition: all 0.3s ease; } /* Hover */ .ripple-fadein-button:hover { background-color: #1E90FF; transform: scale(1.05); } /* Ripple element */ .ripple-fadein-button::before { content: ""; position: absolute; left: 50%; top: 50%; width: 0; height: 0; background: rgba(255,255,255,0.5); border-radius: 50%; transform: translate(-50%, -50%); opacity: 0; } /* Trigger animation */ .ripple-fadein-button:active::before { animation: rippleFadeIn 0.6s ease-out; } /* Animation */ @keyframes rippleFadeIn { 0% { width: 0; height: 0; opacity: 0; } 40% { opacity: 0.6; } 70% { width: 200px; height: 200px; opacity: 0.4; } 100% { width: 350px; height: 350px; opacity: 0; } }