原生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 3种归并操作的实例代码
Oct 30 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
JavaScript父子窗体间的调用方法
Mar 31 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
node.js到底要不要加分号浅析
Jul 11 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
Oct 20 Javascript
mpvue+vant app搭建微信小程序的方法步骤
Feb 11 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
element ui分页多选,翻页记忆的实例
Sep 03 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 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多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
编程语言Python的发展史
2014/09/26 Python
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
python 等差数列末项计算方式
2020/05/03 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
联谊活动总结
2014/08/28 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
《观潮》教学反思
2016/02/17 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL