基于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 相关文章推荐
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
JS的Document属性和方法小结
Sep 17 Javascript
jQuery页面加载初始化常用的三种方法
Jun 04 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
微信小程序 基础组件与导航组件详细介绍
Feb 21 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
May 26 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
使用Vue自定义指令实现Select组件
May 24 Javascript
小程序关于请求同步的总结
May 05 Javascript
vue实现配置全局访问路径头(axios)
Nov 01 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 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
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python验证企业工商注册码
2015/10/25 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python和shell获取文本内容的方法
2018/06/05 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
UGG英国官方网站:UGG UK
2018/02/08 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
创业培训计划书
2014/05/03 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫