基于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 相关文章推荐
javascript iframe编程相关代码
Dec 28 Javascript
js 为label标签和div标签赋值的方法
Aug 08 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
JavaScript实现给按钮加上双重动作的方法
Aug 14 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
Feb 14 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
Jan 21 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 Javascript
vue.js 2.0实现简单分页效果
Jul 29 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
小程序实现侧滑删除功能
Jun 25 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
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
php与paypal整合方法
2010/11/28 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
web 页面分页打印的实现
2009/06/22 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
营销主管自我评价怎么写
2013/09/19 职场文书
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
法定授权委托证明书
2014/09/27 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
在职证明书模板
2015/06/15 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏
Android Studio 计算器开发
2022/05/20 Java/Android