基于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 相关文章推荐
XMLHTTPRequest的属性和方法简介
Nov 23 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
判断iframe里的页面是否加载完成
Jun 06 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
Mar 02 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
总结javascript中的六种迭代器
Aug 16 Javascript
js仿小米官网图片轮播特效
Sep 29 Javascript
JavaScript数组去重的几种方法效率测试
Oct 23 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
基于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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
PHP答题类应用接口实例
2015/02/09 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
Javascript 学习书 推荐
2009/06/13 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
阿德的梦教学反思
2014/02/06 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
报到证办理个人委托书
2014/10/06 职场文书
《确定位置》教学反思
2016/02/18 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS