原生JS实现烟花效果


Posted in Javascript onMarch 10, 2020

原生JS实现烟花效果,点击页面生成烟花,向四周扩散,然后再坠落下去。(这里的烟花我是用的特殊字符爱心形状)

原生JS实现烟花效果

基础css代码

/* 设置基础的css样式 */
 body{background: #000;overflow: hidden;}
 .fire{position: absolute;width: 4px;height: 30px;}

js代码:

1、给页面添加点击事件,生成主体烟花

//给页面设置点击事件
 document.onclick = function(eve){
 var e = eve || window.event;
 //设置一个空数组,用来后面存放小烟花
 var arr = [];
 //获取鼠标点击的位置
 var x = e.clientX;
 var y = e.clientY;
 //设置步长
 var speed = 20;
 //生成大烟花,设置他的css样式,出发点在可视区页面的下方
 var fire = document.createElement('div');
 fire.className = 'fire';
 fire.style.background = randomColor();
 fire.style.left = x + 'px';
 fire.style.top = document.documentElement.clientHeight+'px';
 //将大烟花追加到页面上
 document.body.appendChild(fire);

2、设置定时器,让烟花向上运动,删除

//生成定时器
 var t = setInterval(function(){
 //判断如果大烟花的TOP值小于小于目标值,清除定时器,并且将大烟花清除
 if(fire.offsetTop <= y){
 clearInterval(t);
 document.body.removeChild(fire);
 //执行show(生成小烟花)
 show();
 }
 //让大烟花垂直向上运动
 fire.style.top = fire.offsetTop - speed +'px';
 },30);

3、然后在点击的位置生成小烟花,设置样式

function show(){
 //利用循环,生成50个小烟花,给小烟花添加css属性
 for(var i=0;i<50;i++){
 var sFire = document.createElement('div');
 // sFire.className = 'small-fire';
 sFire.style.left = x +'px';
 sFire.style.top = y +'px';
 // sFire.style.background = randomColor();
 sFire.style.color = randomColor();
 sFire.innerHTML = '❤';
 sFire.style.position = 'absolute';
 //生成随机数
 var a=Math.random()*360;
 sFire.sx = Math.sin(a*180/Math.PI)*20*Math.random();
 sFire.sy = Math.cos(a*180/Math.PI)*20*Math.random();
 //将小烟花追加到页面上
 document.body.appendChild(sFire);
 //将生成的烟花信息都添加到数组中
 arr.push(sFire);
 }
 }

4、设置定时器,让小烟花完成自由落体运动

setInterval(function move(){
 //利用循环一直改变小烟花的位置
 for(var i=0;i<arr.length;i++){
 //设置将每次循环的第i个小烟花的运动范围
 arr[i].style.left = arr[i].offsetLeft + arr[i].sx + 'px';
 arr[i].style.top = arr[i].offsetTop + arr[i].sy + 'px';
 //让烟花垂直方向的位置每次都增加,实现下落效果
 arr[i].sy += 1;
 //判断烟花是否运动出屏幕可视区,如果是,就将它删除
 if(arr[i].offsetLeft<0 || arr[i].offsetLeft > document.documentElement.clientWidth || arr[i].offsetTop > document.documentElement.clientHeight){
 document.body.removeChild(arr[i]);
 // arr.splice(i,1);
 }
 }
 },30)
 }

5、最后别忘了我们的随机数和随机颜色的封装

// 范围随机数
 function random(max,min){
  return Math.round(Math.random()*(max-min)+min);
 }
 // 随机颜色
 function randomColor(){
  return "rgb("+random(0,255)+","+random(0,255)+","+random(0,255)+")";
 }

最后我们的烟花效果就实现了

今天的分享就到这里,希望大家能够喜欢。

更多JavaScript精彩特效分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
初学JavaScript_03(ExtJs Grid的简单使用)
Oct 02 Javascript
深入理解javascript动态插入技术
Nov 12 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
jQuery淡入淡出元素让其效果更为生动
Sep 01 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
利用10行js代码实现上下滚动公告效果
Dec 08 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 Javascript
VUE简单的定时器实时刷新的实现方法
Jan 20 Javascript
JavaScript实现滑动门效果
Jan 18 Javascript
详解node和ES6的模块导出与导入
Feb 19 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
Mar 10 #Javascript
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 #Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 #Javascript
js模拟实现烟花特效
Mar 10 #Javascript
JS实现放烟花效果
Mar 10 #Javascript
JS实现烟花爆炸效果
Mar 10 #Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 #Javascript
You might like
图书管理程序(三)
2006/10/09 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
PHP运行模式的深入理解
2013/06/03 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP四大安全策略
2014/03/12 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
javascript表单正则应用
2017/02/04 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python调用C语言开发的共享库方法实例
2015/03/18 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python 判断奇数偶数的方法
2018/12/20 Python
详解python 中in 的 用法
2019/12/12 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
Nike香港官网:Nike HK
2019/03/23 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
国家助学金感谢信
2015/01/21 职场文书
个人思想政治总结
2015/03/05 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
超市员工辞职信范文
2015/05/12 职场文书
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server