星空软件

 找回密码
 立即注册

[推广技巧] js实现放烟花效果,结合JS+html+css

1036676102 | 2023-11-7 19:30:53 | 显示全部楼层 |阅读模式
小编学js不少年了,做过前端的那种插件和调试,今天闲着无聊就想着怎么用js+css+html给大家实现一个放烟花的效果,其实这个代码的实现逻辑也没有大家想想的那么难,下面就跟着我的操作一步步来,你也能实现这种效果哈。

整个实现原理和过程:

  • HTML: 用于放置烟花动画的容器。
  • CSS: 用于定义烟花的基本样式和动画。
  • JavaScript: 用于创建烟花的动画逻辑和控制它们的行为。

教程开始:
1、在本地我们新建三个文件,分别为:index.html、styles.css、script.js
截图202311071926339244.png
2、然后把下面的代码粘贴到index.html里面
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Fireworks</title>
  7. <link rel="stylesheet" href="styles.css">
  8. </head>
  9. <body>
  10. <div id="fireworks-container"></div>
  11. <script src="script.js"></script>
  12. </body>
  13. </html>
复制代码
3、然后再把下面代码粘贴到styles.css文件里面
  1. /* Basic styles for fireworks container */
  2. #fireworks-container {
  3.   position: relative;
  4.   width: 100vw;
  5.   height: 100vh;
  6.   background: black;
  7.   overflow: hidden;
  8. }

  9. /* Basic styles for a firework */
  10. .firework {
  11.   position: absolute;
  12.   width: 4px;
  13.   height: 4px;
  14.   border-radius: 50%;
  15.   background-color: white;
  16.   opacity: 0;
  17.   animation: firework 2s forwards;
  18. }

  19. /* Keyframes for firework animation */
  20. @keyframes firework {
  21.   0% {
  22.     opacity: 1;
  23.     transform: scale(0);
  24.   }
  25.   100% {
  26.     opacity: 0;
  27.     transform: scale(1);
  28.   }
  29. }
复制代码
4、然后再把下面代码粘贴到script.js文件里面
  1. // Function to create a single firework particle
  2. function createFirework(x, y) {
  3.   const firework = document.createElement('div');
  4.   firework.classList.add('firework');
  5.   firework.style.left = x + 'px';
  6.   firework.style.top = y + 'px';
  7.   document.getElementById('fireworks-container').appendChild(firework);
  8.   // Remove firework after animation ends
  9.   firework.addEventListener('animationend', function() {
  10.     firework.remove();
  11.   });
  12. }

  13. // Function to launch a firework at a random position
  14. function launchFirework() {
  15.   const x = Math.random() * window.innerWidth;
  16.   const y = Math.random() * window.innerHeight;
  17.   createFirework(x, y);
  18. }

  19. // Launch a new firework every 500 milliseconds
  20. setInterval(launchFirework, 500);
复制代码
5、最后我们打开index.html,看下效果,发现粒子缺少有点少,这个其实你后期是可以优化一下的
截图202311071930519268.png




上一篇:js多线程实现get请求,对一个网址
下一篇:易语言怎么获取某个页面的cookie数据?看我教程
回复

使用道具 举报

otosav | 2023-11-7 19:31:02 | 显示全部楼层
感谢分享
回复

使用道具 举报

幸运平台 | 2023-11-7 19:31:24 | 显示全部楼层
粒子太少的问题怎么解决呢
回复

使用道具 举报

ylagixar | 2023-11-7 19:31:57 | 显示全部楼层
幸运平台 发表于 2023-11-7 19:31
粒子太少的问题怎么解决呢

改进下代码
回复

使用道具 举报

3477737972 | 2023-11-7 19:33:22 | 显示全部楼层
这是我改进的代码,发现粒子明显多了

  1. // Function to generate a random color
  2. function getRandomColor() {
  3.   const letters = '0123456789ABCDEF';
  4.   let color = '#';
  5.   for (let i = 0; i < 6; i++) {
  6.     color += letters[Math.floor(Math.random() * 16)];
  7.   }
  8.   return color;
  9. }

  10. // Function to create a single firework particle
  11. function createFirework(x, y, color) {
  12.   const firework = document.createElement('div');
  13.   firework.classList.add('firework');
  14.   firework.style.left = x + 'px';
  15.   firework.style.top = y + 'px';
  16.   firework.style.backgroundColor = color;
  17.   document.getElementById('fireworks-container').appendChild(firework);

  18.   // Randomize the animation
  19.   const scale = Math.random() * 0.5 + 0.5; // Size between 0.5 and 1
  20.   const duration = Math.random() * 900 + 100; // Duration between 100ms and 1000ms
  21.   const opacity = Math.random() * 0.5 + 0.5; // Opacity between 0.5 and 1

  22.   firework.style.transform = `scale(${scale})`;
  23.   firework.style.opacity = opacity;
  24.   firework.style.transition = `all ${duration}ms`;

  25.   // Apply animation
  26.   setTimeout(() => {
  27.     firework.style.transform = `translate(${(Math.random() - 0.5) * 200}px, ${(Math.random() - 0.5) * 200}px) scale(0)`;
  28.     firework.style.opacity = 0;
  29.   }, 10);

  30.   // Remove firework after animation ends
  31.   setTimeout(() => {
  32.     firework.remove();
  33.   }, duration);
  34. }

  35. // Function to launch multiple fireworks at a random position
  36. function launchFireworks() {
  37.   const count = Math.random() * 20 + 30; // Launch between 30 and 50 particles
  38.   for (let i = 0; i < count; i++) {
  39.     const x = Math.random() * window.innerWidth;
  40.     const y = Math.random() * window.innerHeight;
  41.     const color = getRandomColor();
  42.     createFirework(x, y, color);
  43.   }
  44. }

  45. // Launch new fireworks every 500 milliseconds
  46. setInterval(launchFireworks, 500);
复制代码
截图202311071933214320.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

全站声明【必看】|小黑屋|新库软件 |网站地图

GMT+8, 2024-5-2 17:10 , Processed in 0.064374 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.