基于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实现页面转发功能示例代码
Aug 05 Javascript
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
基于JavaScript的操作系统你听说过吗?
Jan 28 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
Jan 04 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
微信小程序mpvue点击按钮获取button值的方法
May 29 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
如何实现js拖拽效果及原理解析
May 08 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 表单验证实现代码
2009/03/10 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
基于python调用psutil模块过程解析
2019/12/20 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
python实现FTP循环上传文件
2020/03/20 Python
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
婚庆公司的创业计划书
2014/01/22 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
借款协议书
2014/09/16 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
关于分班的感言
2015/08/04 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
银行求职信怎么写
2019/06/20 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android