DEV Community

Cover image for 🎆 Light Up Your Browser: Creating a Dazzling Fireworks Display with JavaScript and Canvas
Best Codes
Best Codes

Posted on

🎆 Light Up Your Browser: Creating a Dazzling Fireworks Display with JavaScript and Canvas

Hey there, fellow code enthusiasts! 🎉 Are you ready to add some sparkle to your web projects? Today, we're diving into the world of digital pyrotechnics with a spectacular fireworks display that you can create right in your browser!

In case you didn't know already, July 4th is Independence Day in the USA.
Happy (early) Independence Day!

gif

Already excited? Check out the source code for the project here!
https://github.com/The-Best-Codes/the-best-codes.github.io/tree/main/devto/projects/2024_july_4th
.

Demo project here

🎆 The Magic Behind the Explosions

Our fireworks display is powered by the dynamic duo of JavaScript and HTML5 Canvas. We'll be using object-oriented programming to create realistic firework behavior, complete with launch trails, explosions, and even sound effects!

🚀 Launching into Action

The heart of our display is the Firework class. Each firework starts its journey from the bottom of the screen, propelled by a velocity vector. As it ascends, it leaves behind a shimmering trail of particles. When the firework reaches its target height or starts to fall, BOOM! It explodes into a burst of colorful particles.

class Firework {
  constructor(x, y) {
    // Initialize firework properties
    // ...
    playRandomSound(launchSounds);
  }

  explode() {
    // Create explosion particles
    // ...
    playRandomSound(explosionSounds);
  }

  // Other methods...
}
Enter fullscreen mode Exit fullscreen mode

✨ The Particle Party

The Particle class is responsible for the individual sparks that make up our fireworks. Each particle has its own color, velocity, and lifespan. Some particles even have a chance to shimmer, adding an extra layer of realism to our display.

class Particle {
  constructor(x, y, color, velocity) {
    // Initialize particle properties
    // ...
    this.shimmer = Math.random() < 0.3; // 30% chance of shimmer
  }

  // Other methods...
}
Enter fullscreen mode Exit fullscreen mode

🎵 Sound Effects for the Win

To make our fireworks display truly immersive, we've added sound effects for both the launch and explosion. The playRandomSound function selects a random sound from an array, ensuring variety in our audio experience.

🖌️ Painting the Night Sky

The animate function is where the magic happens. It clears the canvas, updates and draws each firework, and occasionally creates new fireworks. The result is a continuous, randomized display that's sure to captivate your users.

👆 Interactive Fun

Want to add your own fireworks to the show? No problem! We've added a click event listener that creates a new firework wherever you click on the canvas.

canvas.addEventListener("click", (event) => {
  fireworks.push(new Firework(event.clientX, event.clientY));
});
Enter fullscreen mode Exit fullscreen mode

🚀 Launch Your Own Fireworks Display

Ready to light up your own projects? Here's how you can get started:

  1. Copy the provided HTML, CSS, and JavaScript code. Source Code Here
  2. Create a new HTML file and paste the code.
  3. Add the necessary sound files to an "assets" folder.
  4. Open the HTML file in your browser and enjoy the show!

Remember to experiment with the code. Try changing colors, adding new particle shapes, or even syncing the fireworks to music!

💡 Pro Tip: This fireworks display can be a great addition to celebration pages, New Year's countdown timers, or as a reward animation in games; not just Independence Day!

So, what are you waiting for? Let's paint the digital sky with code and create some unforgettable web experiences! Happy coding, and may your projects always sparkle! ✨🎆


Article by BestCodes with the assistance of the BestCodes AI. BestCodes AI runs on the Claude-3.5-Sonnet AI model, one of the many awesome models you can use affordably at https://convoai.tech.

Top comments (1)