Ripple Effect Download Button - VexaX
Run Code
Toggle Theme
Share Link
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ripple Effect Download Button</title> <style> body { display: flex; justify-content: center; align-items: center; height: 100vh; background: #fafafa; margin: 0; font-family: Arial, sans-serif; } .download-btn { position: relative; display: inline-flex; align-items: center; padding: 15px 30px; background: #4caf50; color: white; font-size: 18px; font-weight: bold; text-decoration: none; border-radius: 8px; overflow: hidden; transition: background 0.3s ease; } .download-btn:hover { background: #45a049; } .download-btn .icon { margin-right: 10px; font-size: 24px; } .download-btn .ripple { position: absolute; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.5); top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0); border-radius: 50%; pointer-events: none; animation: ripple 0.6s linear; } @keyframes ripple { to { transform: translate(-50%, -50%) scale(4); opacity: 0; } } </style> </head> <body> <a href="#" class="download-btn" onclick="rippleEffect(event)"> <span class="icon">⬇️</span> Download </a> <script> function rippleEffect(event) { const button = event.currentTarget; const ripple = document.createElement('span'); ripple.classList.add('ripple'); button.appendChild(ripple); ripple.addEventListener('animationend', () => { ripple.remove(); }); } </script> </body> </html>