基于jQuery的烟花效果(运动相关)点击屏幕出烟花


Posted in Javascript onJune 14, 2012

效果图
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
核心代码:

$(function(){ 
$(document).click(function(event){ 
/*1.创建DIV并插入到body当中 
*2.设置其初始位置:TOP为屏幕的高度,left为鼠标点击时,鼠标的pageX值; 
*/ 
//创建DIV 
var $div = $("<div/>"); 
var eLeft = event.pageX; 
var etop = event.pageY; 
var cHeight = document.documentElement.clientHeight; 
//设定颜色、大小,和其初始化的位置 
$div.css({"width":4,"height":15,"background-color":"red","top":cHeight,"left":eLeft}); 
//插入到页面的body当中去; 
$("body").append($div); 
//不要出现滚动条 
$("body").css("overflow","hidden"); 
//让DIV向上移动,并且移动到鼠标位置后,删除这个DIV元素,之后执行烟花效果; 
$div.animate({"top":etop},700,function(){ 
//移除DIV 
$(this).remove(); 
/*烟花效果 
*1.烟花是很多个DIV构成 
*2.每个烟花的颜色不一样 
*3.烟花的位置也不一样 
*4.烟花散开方向不一样 
*5.烟花有下坠感觉 
*/ 
//用循环造建很多个DIV,来表示烟花 
for(i=0;i<20;i++){ 
$("body").append($("<div class='yh'></div>")); 
} 
/*烟花的颜色是随机的,而且是用16进制表示色值,所以用随机数结合16进制; 
*16进制的最大值ffffff,转换成十进制16777215; 
*Math.random()*16777215公式可以得到0-16777215之间的数,因为是小数,所以要用到取整; 
*Math.ceil(Math.random()*16777215)生成一个在颜色值范围内的,随机的十进制值; 
*Math.random()*9+1公式可以得到1-10之间的数,以此类推 
*.toString(16)方法,是把得到的十进制,转换成16进制,也就是随机的颜色值了; 
*/ var sjColor = "" 
function changColor(){ 
sjColor = Math.ceil(Math.random()*16777215).toString(16)//; 
//当这个产生的随机的颜色值,不足6位数的进候,需要补齐,又不改变其值,所以要在这个数的前面加零; 
while(sjColor.length<6){ 
sjColor = "0"+sjColor; 
} 
} 

//设置烟花DIV的颜色和位置、散开,坠落 
$(".yh").css({"width":3,"height":3,"top":etop,"left":eLeft}); 
/*烟花散开要设左和上 
*Math.random()*20-20这里要减20,是因为烟花是从中心点的左右散开的, 
*最小随机数时0-10 = -10,最大随机数时20-10=10;所以就是正负10之间 
*/ 
$(".yh").each(function(index, element) { 
var $this = $(this); 
changColor() 
var yhX = Math.random()*400-200; 
var yhY = Math.random()*600-300; 
$this. 
css({"background-color":"#"+sjColor,"width":3,"height":3}). 
animate({"top":etop-yhY,"left":eLeft-yhX},500);//散开 
for(i=0;i<30;i++){ 
//判断鼠标点击时的右边烟花还是左边烟花 
if(yhX<0){ 
downPw($this,"+");//右下坠 
}else{ 
downPw($this,"-");//左下坠 
} 
} 
//下坠效果,即同时改变烟花元素的X和Y,会有抛物线感觉,然后完成动画后,删除这个烟花元素 
function downPw(odiv,f){ 
odiv.animate({"top":"+=30","left":f+"=4"},50,function(){ 
setTimeout(function(){odiv.remove()},2000); 
}) 
} 
}); 
}); 
}) 
})

一、功能

点击页面出现上图的效果,并下坠。
二、功能分析

1.点击时创建DIV并插入到body当中

2.烟花是很多个DIV构成,所以同时也要创建这些DIV

3.每个烟花的颜色不一样,所以需要随机函数处理颜色值

4.烟花的位置也不一样,所以也需要随机函数处理位置

5.烟花散开方向不一样

6.烟花要下坠感觉
三、总结:

3.1.随机数 Math.random()零到一之间的数;

3.11Math.random()乘以任意一个数,结果就是0-这个乘数之间的值,

Math.random()*9 结果就是0-9之间的数

3.12如果要让起始值为别一个指定的数,不为零,就加上这一个数;

Math.random()*8+2 结果就是2-10之间的数

3.13如果要想正负之间的数,就减去乘数的一半

Math.random()*8-4,其结果就是+4和-4之间的数

3.2运动核心

3.21就是让元素在当前页面中的X坐标,或Y坐标 发生改变(加、减、乘、除等,只要能让这个值改变的运算,都行)

3.22怎么改变才能看起来是运动的呢?

每次改变时,都是参考元素当前的X或Y坐标。(因为每一次的改变,这个元素的坐标就会变化)所以始终都要获取到当前这个元素改变之后的X或Y坐标值。

3.3随机颜色值

颜色值,是十六进制数。而这个值也是有范围的,所以我们要先取得其范围。

000000-FFFFFF.

然后要转换成十进制的范围

0-16777215

有了这个范围就可以利用随机数,生成在这个范围内的色值了。当然最后还是要转成十六进制,并且不要忘记在色值前面加"#"号

3.4下坠感

其实就是让元素有,一个抛物线的变化,即让元素的X和Y的值,同时间变化。

(在使用setTimeout的时候,里面的this,不要指向错了!~~)

在线演示:http://demo.3water.com/js/2012/myyanhua/
打包下载:myyanhua_3water.rar

Javascript 相关文章推荐
js showModalDialog 弹出对话框的简单实例(子窗体)
Jan 07 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
Mar 03 Javascript
使用jQuery动态加载js脚本文件的方法
Apr 03 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
Aug 18 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
Mar 29 Javascript
Vue表单验证插件的制作过程
Apr 01 Javascript
JS实现标签页切换效果
May 04 Javascript
Vue中v-for的数据分组实例
Mar 07 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
Vue render深入开发讲解
Apr 13 Javascript
基于jQuery的360图片展示实现代码
Jun 14 #Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 #Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 #Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
Jun 11 #Javascript
javascript倒计时功能实现代码
Jun 07 #Javascript
基于jQuery的计算文本框字数的代码
Jun 06 #Javascript
Javascript 页面模板化很多人没有使用过的方法
Jun 05 #Javascript
You might like
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
javascript 写类方式之三
2009/07/05 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python 运算符 供重载参考
2009/06/11 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
校园门卫岗位职责
2013/12/09 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
面试后的英文感谢信
2014/02/01 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
黑白记忆观后感
2015/06/18 职场文书
平凡的世界读书笔记
2015/06/25 职场文书