原生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中实现暂停的几篇文章
Mar 04 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
Mar 22 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
jQuery修改CSS伪元素属性的方法
Jul 30 Javascript
javascript截取字符串小结
Apr 28 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
解决 window.onload 被覆盖的问题方法
Jan 14 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 var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
asp 取文本框名称代码
2008/12/02 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
js word表格动态添加代码
2010/06/07 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
python修改操作系统时间的方法
2015/05/18 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
python 求定积分和不定积分示例
2019/11/20 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
开票证明
2015/06/23 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
导游词之沈阳植物园
2019/11/30 职场文书