Free
Alex Patterson
JavaScript Confetti library
JavaScript Confetti Library is an amazingly simple yet powerful tool, that you can add to any website for just 3.2kB br compressed.
All you need to add to your <head>
is the below script.
<script src="https://cdn.jsdelivr.net/npm/js-confetti@latest/dist/js-confetti.browser.js"></script>
CSS
This is all just for visuals of the text, the JavaScript for JS Confetti does all the work.
#confetti {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.title {
line-height: 1;
animation: animateText 2s infinite;
}
.title span {
display: block;
}
.message {
font-weight: 500;
}
.followers {
font-weight: 700;
font-size: 70px;
background-image: linear-gradient(90deg, rgba(94, 114, 235, 1) 0%, #ff9190 56%, #fec195 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@keyframes animateText {
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.75);
}
}
/******IGNORE THIS****/
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap');
:root {
--night: #0d0029;
--lavender: #daa4f6;
--yellow: #f9dc5c;
--red: #e84855;
--mint: #55deae;
}
body {
font-family: 'JetBrains Mono', monospace;
font-size: 32px;
font-weight: 800;
height: 100vh;
padding: 0;
display: flex;
flex-direction: column;
gap: 2%;
justify-content: center;
align-items: center;
color: var(--yellow);
background-color: var(--night);
transition: all 0.3s ease-in-out;
}
JavaScript
We added to the id title
an animation using the CSS animation:animateText 2s infinite;
this will run continuously. Now you can get the animationiteration event, which is triggered for every iteration of this animation.
The only line that we need for the actual confetti is below. This is adding a mix of colors
jsConfetti.addConfetti({
confettiColors: [c1, c2, c3, c4],
confettiRadius: 3,
confettiNumber: 250
});
const canvas = document.querySelector('#confetti');
const jsConfetti = new JSConfetti({
canvas
});
var c1 = getComputedStyle(document.documentElement).getPropertyValue('--lavender');
var c2 = getComputedStyle(document.documentElement).getPropertyValue('--yellow');
var c3 = getComputedStyle(document.documentElement).getPropertyValue('--red');
var c4 = getComputedStyle(document.documentElement).getPropertyValue('--mint');
document.querySelector('.title').addEventListener('animationiteration', () => {
jsConfetti.addConfetti({
confettiColors: [c1, c2, c3, c4],
confettiRadius: 3,
confettiNumber: 250
});
});