原生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 相关文章推荐
var与Javascript变量隐式声明
Sep 17 Javascript
jquery获得keycode的示例代码
Dec 30 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
js 轮播效果实例分享
Dec 28 Javascript
js代码延迟一定时间后执行一个函数的实例
Feb 15 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
微信小程序自定义组件
Aug 16 Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
three.js实现3D视野缩放效果
Nov 16 Javascript
微信小程序实现换肤功能
Mar 14 Javascript
解决vue组件中click事件失效的问题
Nov 09 Javascript
JS运算符优先级与表达式示例详解
Sep 04 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处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
学生会招新策划书
2014/02/14 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
法人授权委托书样本
2014/09/19 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
浅谈MySQL中的六种日志
2022/03/23 MySQL
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技