0


前端入门(烟花特效,纯 js)

(许久没写前端了,觉得好玩,写个练练手,超级菜鸡入门罢了)

纯 js,这个 html 和 css 就没咋写

  1. <!DOCTYPE html><html><head></head><body><script src="抛物线运动.js"></script><script src="烟花绽开动画.js"></script></body></html>

首先烟花每个粒子看作是一个个小点,在做抛物运动,就是一个简单的通过给出的角度和初速度,求出x和y坐标的分速度,然后每过一段时间更新一下位置即可

  1. function parabolic_motion(item, angle, speed, gravity, time){
  2. gravity =-gravity;
  3. var speed_x = speed * Math.cos(angle);
  4. var speed_y = speed * Math.sin(angle);
  5. var loction_x = item.getBoundingClientRect().left;
  6. var loction_y = item.getBoundingClientRect().top;
  7. var start_motion =setInterval(function(){
  8. speed_y = speed_y + gravity /200;
  9. loction_x = loction_x + speed_x /200;
  10. loction_y = loction_y - speed_y /200;
  11. item.style.left = loction_x +'px';
  12. item.style.top = loction_y +'px';},5);
  13. var stop_motion =setTimeout(function(){clearInterval(start_motion)}, time *1000)}

然后就是随机时间,生成随机颜色粒子,然后随机位置向随机方向进行抛物运动即可,然后其他数据随便设置的合理一点即可,再每个粒子再分别运动一段时间后消失即可

  1. make_firework(300,300,200,100);// location_x 烟花圆心x坐标, location_y 烟花圆心y坐标, firework_num 是烟花数量, firework_R 是烟花半径
  2. function make_firework(location_x, location_y, firework_num, firework_R){
  3. var firework_data =[];
  4. var body = document.getElementsByTagName('body')[0];for(var i =0; i < firework_num; i++){
  5. var angle =(Math.random()*1000%(360/ firework_num)+360/ firework_num * i)* Math.PI /180;
  6. var num_random = Math.random()/2;
  7. var position_x = location_x + num_random * Math.cos(angle)* firework_R;
  8. var position_y = location_y + num_random * Math.sin(angle)* firework_R;
  9. var item = document.createElement('div');
  10. body.appendChild(item);
  11. item.style.position ='fixed';
  12. item.style.left = position_x +'px';
  13. item.style.top = position_y +'px';
  14. item.style.width = firework_R /20+'px';
  15. item.style.height = firework_R /20+'px';
  16. item.style.borderRadius ='50%';
  17. firework_data[i]={'item': item,'angle': angle,'speed': firework_R /4,'gravity': firework_R /10,'time':5};}for(var i =0; i < firework_num; i++){
  18. var firework_time = Math.random()*3000;setTimeout(function(it){
  19. it.item.style.backgroundColor ='rgb('+ Math.random()*255+','+ Math.random()*255+','+ Math.random()*255+')';parabolic_motion(it.item, it.angle, it.speed, it.gravity, it.time);}, firework_time, firework_data[i]);setTimeout(function(father, son){
  20. father.removeChild(son);}, firework_data[i].time *1000+ firework_time, body, firework_data[i].item);}}

(没想到花两个小时才搞出个这么丑的玩意,下次试试搞搞别的东西,溜了)
请添加图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

标签: 前端 javascript css

本文转载自: https://blog.csdn.net/m0_52212261/article/details/122483641
版权归原作者 gronkie 所有, 如有侵权,请联系我们删除。

“前端入门(烟花特效,纯 js)”的评论:

还没有评论