Toggle navigation
☰
Home
HTML
CSS
Scripting
Database
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Confetti on Click Button</title> <style> /* Component: Confetti on Click Button Description: A button that triggers a confetti animation. */ :root { --confetti-btn-bg: #9933ff; /* A festive purple */ --confetti-btn-text-color: #ffffff; --confetti-btn-bg-hover: #8000ff; --confetti-btn-focus-outline: #9933ff; } .confetti-container-1 { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; display: flex; justify-content: center; align-items: center; padding: 2rem; min-height: 250px; background-color: #f8f9fa; } .confetti-btn-1 { display: inline-block; padding: 1.2rem 2.5rem; font-size: 1.25rem; font-weight: 700; color: var(--confetti-btn-text-color); background-color: var(--confetti-btn-bg); border: none; border-radius: 12px; cursor: pointer; text-decoration: none; box-shadow: 0 4px 15px rgba(153, 51, 255, 0.3); transition: all 0.2s ease-in-out; } .confetti-btn-1:hover { background-color: var(--confetti-btn-bg-hover); transform: translateY(-3px); box-shadow: 0 6px 20px rgba(153, 51, 255, 0.4); } .confetti-btn-1:focus-visible { outline: 3px solid var(--confetti-btn-focus-outline); outline-offset: 3px; } </style> </head> <body> <!-- Include the canvas-confetti library --> <script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.2/dist/confetti.browser.min.js"></script> <div class="confetti-container-1"> <button type="button" class="confetti-btn-1" id="confettiBtn1">Complete Purchase</button> </div> <script> document.addEventListener('DOMContentLoaded', () => { const confettiButton = document.getElementById('confettiBtn1'); confettiButton.addEventListener('click', () => { // Do the actual work (e.g. submit form, save data) here first // ... // Then, trigger the celebration! const celebration = () => { const duration = 2 * 1000; const animationEnd = Date.now() + duration; const defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0 }; function randomInRange(min, max) { return Math.random() * (max - min) + min; } const interval = setInterval(function() { const timeLeft = animationEnd - Date.now(); if (timeLeft <= 0) { return clearInterval(interval); } const particleCount = 50 * (timeLeft / duration); // since particles fall down, start a bit higher than random confetti(Object.assign({}, defaults, { particleCount, origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 } })); confetti(Object.assign({}, defaults, { particleCount, origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 } })); }, 250); }; celebration(); }); }); </script> </body> </html>