原生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 相关文章推荐
javascript 全等号运算符使用说明
May 31 Javascript
使用Jquery实现点击文字后变成文本框且可修改
Sep 21 Javascript
浅析JavaScript中两种类型的全局对象/函数
Dec 05 Javascript
底部悬浮通栏可以关闭广告位的实现方法
Jun 01 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
Vue函数式组件-你值得拥有
May 09 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
Vue触发input选取文件点击事件操作
Aug 07 Javascript
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
介绍一些PHP判断变量的函数
2012/04/24 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
ThinkPHP路由详解
2015/07/27 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
Python验证码识别的方法
2015/07/10 Python
Python对象属性自动更新操作示例
2018/06/15 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
windows支持哪个版本的python
2020/07/03 Python
python 用struct模块解决黏包问题
2020/11/07 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
自我评价是什么
2014/01/04 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
计算机网络专业求职信
2014/06/05 职场文书
社区党建工作方案
2014/06/10 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL