原生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限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
详解Jquery Easyui的验证扩展
Jan 09 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
Vue.js学习教程之列表渲染详解
May 17 Javascript
JS实现监控微信小程序的原理
Jun 15 Javascript
vue代码分割的实现(codesplit)
Nov 13 Javascript
微信小程序dom操作的替代思路实例分析
Dec 06 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
javascript读取本地文件和目录方法详解
Aug 06 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 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生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
PHP7修改的函数
2021/03/09 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python continue语句用法实例
2014/03/11 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
房地产融资计划书
2014/01/10 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
入党函调证明材料
2014/12/24 职场文书
2015年化验员工作总结
2015/04/10 职场文书
欠款起诉书范文
2015/05/19 职场文书
世界名著读书笔记
2015/06/25 职场文书
实用求职信模板范文
2019/05/13 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
Minikube搭建Kubernetes集群
2022/03/31 Servers
golang操作rocketmq的示例代码
2022/04/06 Golang
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL