原生Js实现简易烟花爆炸效果的方法


Posted in Javascript onMarch 20, 2015

本文实例讲述了原生Js实现简易烟花爆炸效果的方法。分享给大家供大家参考。具体分析如下:

实现原理: 在一定范围内,随机生成一些div,形成烟花效果

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>js烟花效果</title>

<script type="text/javascript">

document.onclick=function (ev)

{

    var oEvent=ev||event;

    var aDiv=[];

    var oDiv=null;

    var _oDiv=document.createElement('div');

    var i=0;

    var x=oEvent.clientX;

    var y=oEvent.clientY;

    _oDiv.style.position='absolute';

    _oDiv.style.background='red';

    _oDiv.style.width='3px';

    _oDiv.style.height='30px';

    _oDiv.style.left=oEvent.clientX+'px';

    _oDiv.style.top=document.documentElement.clientHeight+'px';

    document.body.appendChild(_oDiv);

    var t=setInterval(function (){

        if(_oDiv.offsetTop<=y)

        {

            clearInterval(t);

            show();

            document.body.removeChild(_oDiv);

        }

        _oDiv.style.top=_oDiv.offsetTop-30+'px';

    }, 30);

    function show()

    {

        var oDiv=null;

        for(i=0;i<100;i++)

        {

            oDiv=document.createElement('div');

            oDiv.style.width='3px';

            oDiv.style.height='3px';

            oDiv.style.background='#'+Math.ceil(Math.random()*0xEFFFFF+0x0FFFFF).toString(16);

            oDiv.style.position='absolute';

            oDiv.style.left=x+'px';

            oDiv.style.top=y+'px';

            var a=Math.random()*360;

            //oDiv.speedX=Math.random()*40-20;

            //oDiv.speedY=Math.random()*40-20;

            oDiv.speedX=Math.sin(a*180/Math.PI)*20*Math.random();

            oDiv.speedY=Math.cos(a*180/Math.PI)*20*Math.random();

            document.body.appendChild(oDiv);

            aDiv.push(oDiv);

        }

    }

    setInterval(doMove, 30);

    function doMove()

    {

        for(i=0;i<aDiv.length;i++)

        {

            aDiv[i].style.left=aDiv[i].offsetLeft+aDiv[i].speedX+'px';

            aDiv[i].style.top=aDiv[i].offsetTop+aDiv[i].speedY+'px';

            aDiv[i].speedY+=1;

            if(aDiv[i].offsetLeft<0 || aDiv[i].offsetLeft>document.documentElement.clientWidth || aDiv[i].offsetTop<0 || aDiv[i].offsetTop>document.documentElement.clientHeight)

            {

                document.body.removeChild(aDiv[i]);

                aDiv.splice(i, 1);

            }

        }

    }

};

</script>

</head>

<body style="overflow:hidden; background:black;">

</body>

</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
js onpropertychange输入框 事件获取属性
Mar 26 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
js隐式全局变量造成的bug示例代码
Apr 22 Javascript
13个PHP函数超实用
Oct 21 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 Javascript
javascript Canvas动态粒子连线
Jan 01 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
vue使用echarts画组织结构图
Feb 06 Vue.js
Javascript调用函数方法的几种方式介绍
Mar 20 #Javascript
初识Node.js
Mar 20 #Javascript
JavaScript Sort 的一个错误用法示例
Mar 20 #Javascript
JS实现的数组全排列输出算法
Mar 19 #Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 #Javascript
JavaScript实现在标题栏上显示当前日期的方法
Mar 19 #Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 #Javascript
You might like
Laravel实现autoload方法详解
2017/05/07 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
如何在django中运行scrapy框架
2020/04/22 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
数据库测试通常都包括哪些方面
2015/11/30 面试题
本科生求职简历的自我评价
2013/10/21 职场文书
汽车专业毕业生自荐信
2013/11/03 职场文书
霸气队列口号
2014/06/18 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
租房协议书范文
2014/08/20 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书