原生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随笔(js图片切换效果)
Jul 31 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
Jul 21 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
Apr 02 Javascript
解析jQuery与其它js(Prototype)库兼容共存
Jul 04 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
Aug 11 Javascript
JS中this上下文对象使用方式
Oct 09 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
浅谈Node.js 子进程与应用场景
Jan 24 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python Celery定时任务的示例
2018/03/13 Python
Python3多线程基础知识点
2019/02/19 Python
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
中班中秋节活动反思
2014/02/18 职场文书
工厂搬迁方案
2014/05/11 职场文书
中国梦团日活动总结
2014/07/07 职场文书
工作证明格式及范本
2014/09/12 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
婚宴邀请函
2015/01/30 职场文书
库房管理员岗位职责
2015/02/12 职场文书
公司联欢会主持词
2015/07/04 职场文书
资产移交协议书
2016/03/24 职场文书