原生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背投广告代码的完善
Apr 08 Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
Aug 22 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
JavaScript队列、优先队列与循环队列
Nov 14 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
JQuery实现定时刷新功能代码
May 09 jQuery
js回文数的4种判断方法示例
Jun 04 Javascript
微信小程序整个页面的自动适应布局的实现
Jul 12 Javascript
vue3.0 上手体验
Sep 21 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
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
element-ui多文件上传的实现示例
2019/04/10 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
python中的字符串内部换行方法
2018/07/19 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
会计岗位描述
2014/02/22 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
工作说明书范文
2014/05/07 职场文书
签约仪式策划方案
2014/06/02 职场文书
小学校本培训方案
2014/06/06 职场文书
争先创优活动总结
2014/08/27 职场文书
音乐剧猫观后感
2015/06/04 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技