原生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 小型打飞机游戏实现原理说明
Oct 28 Javascript
js循环改变div颜色具体方法
Jun 25 Javascript
jQuery常用的一些技巧汇总
Mar 26 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
JSON 对象未定义错误的解决方法
Sep 29 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
javascript设计模式之模块模式学习笔记
Feb 15 Javascript
js实现鼠标拖动功能
Mar 20 Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
Jan 10 Javascript
微信小程序云开发实现增删改查功能
May 17 Javascript
vue Element左侧无限级菜单实现
Jun 10 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 getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
Angular的$http与$location
2016/12/26 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
浅谈Django REST Framework限速
2017/12/12 Python
python取代netcat过程分析
2018/02/10 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
买房子个人收入证明
2014/01/16 职场文书
公司股权转让协议书
2014/04/12 职场文书
采购部长岗位职责
2014/06/13 职场文书
三八节标语
2014/06/27 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
十岁生日答谢词
2015/01/05 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
关于分班的感言
2015/08/04 职场文书