基于jQuery的煙花效果(運動相關(guān))點擊屏幕出煙花
更新時間:2012年06月14日 13:19:06 作者:
基于jQuery的煙花效果(運動相關(guān))點擊屏幕出煙花 ,經(jīng)測試不能點擊過多,容易假死
效果圖

核心代碼:
$(function(){
$(document).click(function(event){
/*1.創(chuàng)建DIV并插入到body當(dāng)中
*2.設(shè)置其初始位置:TOP為屏幕的高度,left為鼠標(biāo)點擊時,鼠標(biāo)的pageX值;
*/
//創(chuàng)建DIV
var $div = $("<div/>");
var eLeft = event.pageX;
var etop = event.pageY;
var cHeight = document.documentElement.clientHeight;
//設(shè)定顏色、大小,和其初始化的位置
$div.css({"width":4,"height":15,"background-color":"red","top":cHeight,"left":eLeft});
//插入到頁面的body當(dāng)中去;
$("body").append($div);
//不要出現(xiàn)滾動條
$("body").css("overflow","hidden");
//讓DIV向上移動,并且移動到鼠標(biāo)位置后,刪除這個DIV元素,之后執(zhí)行煙花效果;
$div.animate({"top":etop},700,function(){
//移除DIV
$(this).remove();
/*煙花效果
*1.煙花是很多個DIV構(gòu)成
*2.每個煙花的顏色不一樣
*3.煙花的位置也不一樣
*4.煙花散開方向不一樣
*5.煙花有下墜感覺
*/
//用循環(huán)造建很多個DIV,來表示煙花
for(i=0;i<20;i++){
$("body").append($("<div class='yh'></div>"));
}
/*煙花的顏色是隨機的,而且是用16進(jìn)制表示色值,所以用隨機數(shù)結(jié)合16進(jìn)制;
*16進(jìn)制的最大值ffffff,轉(zhuǎn)換成十進(jìn)制16777215;
*Math.random()*16777215公式可以得到0-16777215之間的數(shù),因為是小數(shù),所以要用到取整;
*Math.ceil(Math.random()*16777215)生成一個在顏色值范圍內(nèi)的,隨機的十進(jìn)制值;
*Math.random()*9+1公式可以得到1-10之間的數(shù),以此類推
*.toString(16)方法,是把得到的十進(jìn)制,轉(zhuǎn)換成16進(jìn)制,也就是隨機的顏色值了;
*/
var sjColor = ""
function changColor(){
sjColor = Math.ceil(Math.random()*16777215).toString(16)//;
//當(dāng)這個產(chǎn)生的隨機的顏色值,不足6位數(shù)的進(jìn)候,需要補齊,又不改變其值,所以要在這個數(shù)的前面加零;
while(sjColor.length<6){
sjColor = "0"+sjColor;
}
}
//設(shè)置煙花DIV的顏色和位置、散開,墜落
$(".yh").css({"width":3,"height":3,"top":etop,"left":eLeft});
/*煙花散開要設(shè)左和上
*Math.random()*20-20這里要減20,是因為煙花是從中心點的左右散開的,
*最小隨機數(shù)時0-10 = -10,最大隨機數(shù)時20-10=10;所以就是正負(fù)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++){
//判斷鼠標(biāo)點擊時的右邊煙花還是左邊煙花
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);
})
}
});
});
})
})
一、功能
點擊頁面出現(xiàn)上圖的效果,并下墜。
二、功能分析
1.點擊時創(chuàng)建DIV并插入到body當(dāng)中
2.煙花是很多個DIV構(gòu)成,所以同時也要創(chuàng)建這些DIV
3.每個煙花的顏色不一樣,所以需要隨機函數(shù)處理顏色值
4.煙花的位置也不一樣,所以也需要隨機函數(shù)處理位置
5.煙花散開方向不一樣
6.煙花要下墜感覺
三、總結(jié):
3.1.隨機數(shù) Math.random()零到一之間的數(shù);
3.11Math.random()乘以任意一個數(shù),結(jié)果就是0-這個乘數(shù)之間的值,
Math.random()*9 結(jié)果就是0-9之間的數(shù)
3.12如果要讓起始值為別一個指定的數(shù),不為零,就加上這一個數(shù);
Math.random()*8+2 結(jié)果就是2-10之間的數(shù)
3.13如果要想正負(fù)之間的數(shù),就減去乘數(shù)的一半
Math.random()*8-4,其結(jié)果就是+4和-4之間的數(shù)
3.2運動核心
3.21就是讓元素在當(dāng)前頁面中的X坐標(biāo),或Y坐標(biāo) 發(fā)生改變(加、減、乘、除等,只要能讓這個值改變的運算,都行)
3.22怎么改變才能看起來是運動的呢?
每次改變時,都是參考元素當(dāng)前的X或Y坐標(biāo)。(因為每一次的改變,這個元素的坐標(biāo)就會變化)所以始終都要獲取到當(dāng)前這個元素改變之后的X或Y坐標(biāo)值。
3.3隨機顏色值
顏色值,是十六進(jìn)制數(shù)。而這個值也是有范圍的,所以我們要先取得其范圍。
000000-FFFFFF.
然后要轉(zhuǎn)換成十進(jìn)制的范圍
0-16777215
有了這個范圍就可以利用隨機數(shù),生成在這個范圍內(nèi)的色值了。當(dāng)然最后還是要轉(zhuǎn)成十六進(jìn)制,并且不要忘記在色值前面加"#"號
3.4下墜感
其實就是讓元素有,一個拋物線的變化,即讓元素的X和Y的值,同時間變化。
?。ㄔ谑褂胹etTimeout的時候,里面的this,不要指向錯了!~~)
在線演示:http://demo.jb51.net/js/2012/myyanhua/
打包下載:myyanhua_jb51.rar

核心代碼:
復(fù)制代碼 代碼如下:
$(function(){
$(document).click(function(event){
/*1.創(chuàng)建DIV并插入到body當(dāng)中
*2.設(shè)置其初始位置:TOP為屏幕的高度,left為鼠標(biāo)點擊時,鼠標(biāo)的pageX值;
*/
//創(chuàng)建DIV
var $div = $("<div/>");
var eLeft = event.pageX;
var etop = event.pageY;
var cHeight = document.documentElement.clientHeight;
//設(shè)定顏色、大小,和其初始化的位置
$div.css({"width":4,"height":15,"background-color":"red","top":cHeight,"left":eLeft});
//插入到頁面的body當(dāng)中去;
$("body").append($div);
//不要出現(xiàn)滾動條
$("body").css("overflow","hidden");
//讓DIV向上移動,并且移動到鼠標(biāo)位置后,刪除這個DIV元素,之后執(zhí)行煙花效果;
$div.animate({"top":etop},700,function(){
//移除DIV
$(this).remove();
/*煙花效果
*1.煙花是很多個DIV構(gòu)成
*2.每個煙花的顏色不一樣
*3.煙花的位置也不一樣
*4.煙花散開方向不一樣
*5.煙花有下墜感覺
*/
//用循環(huán)造建很多個DIV,來表示煙花
for(i=0;i<20;i++){
$("body").append($("<div class='yh'></div>"));
}
/*煙花的顏色是隨機的,而且是用16進(jìn)制表示色值,所以用隨機數(shù)結(jié)合16進(jìn)制;
*16進(jìn)制的最大值ffffff,轉(zhuǎn)換成十進(jìn)制16777215;
*Math.random()*16777215公式可以得到0-16777215之間的數(shù),因為是小數(shù),所以要用到取整;
*Math.ceil(Math.random()*16777215)生成一個在顏色值范圍內(nèi)的,隨機的十進(jìn)制值;
*Math.random()*9+1公式可以得到1-10之間的數(shù),以此類推
*.toString(16)方法,是把得到的十進(jìn)制,轉(zhuǎn)換成16進(jìn)制,也就是隨機的顏色值了;
*/
var sjColor = ""
function changColor(){
sjColor = Math.ceil(Math.random()*16777215).toString(16)//;
//當(dāng)這個產(chǎn)生的隨機的顏色值,不足6位數(shù)的進(jìn)候,需要補齊,又不改變其值,所以要在這個數(shù)的前面加零;
while(sjColor.length<6){
sjColor = "0"+sjColor;
}
}
//設(shè)置煙花DIV的顏色和位置、散開,墜落
$(".yh").css({"width":3,"height":3,"top":etop,"left":eLeft});
/*煙花散開要設(shè)左和上
*Math.random()*20-20這里要減20,是因為煙花是從中心點的左右散開的,
*最小隨機數(shù)時0-10 = -10,最大隨機數(shù)時20-10=10;所以就是正負(fù)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++){
//判斷鼠標(biāo)點擊時的右邊煙花還是左邊煙花
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);
})
}
});
});
})
})
一、功能
點擊頁面出現(xiàn)上圖的效果,并下墜。
二、功能分析
1.點擊時創(chuàng)建DIV并插入到body當(dāng)中
2.煙花是很多個DIV構(gòu)成,所以同時也要創(chuàng)建這些DIV
3.每個煙花的顏色不一樣,所以需要隨機函數(shù)處理顏色值
4.煙花的位置也不一樣,所以也需要隨機函數(shù)處理位置
5.煙花散開方向不一樣
6.煙花要下墜感覺
三、總結(jié):
3.1.隨機數(shù) Math.random()零到一之間的數(shù);
3.11Math.random()乘以任意一個數(shù),結(jié)果就是0-這個乘數(shù)之間的值,
Math.random()*9 結(jié)果就是0-9之間的數(shù)
3.12如果要讓起始值為別一個指定的數(shù),不為零,就加上這一個數(shù);
Math.random()*8+2 結(jié)果就是2-10之間的數(shù)
3.13如果要想正負(fù)之間的數(shù),就減去乘數(shù)的一半
Math.random()*8-4,其結(jié)果就是+4和-4之間的數(shù)
3.2運動核心
3.21就是讓元素在當(dāng)前頁面中的X坐標(biāo),或Y坐標(biāo) 發(fā)生改變(加、減、乘、除等,只要能讓這個值改變的運算,都行)
3.22怎么改變才能看起來是運動的呢?
每次改變時,都是參考元素當(dāng)前的X或Y坐標(biāo)。(因為每一次的改變,這個元素的坐標(biāo)就會變化)所以始終都要獲取到當(dāng)前這個元素改變之后的X或Y坐標(biāo)值。
3.3隨機顏色值
顏色值,是十六進(jìn)制數(shù)。而這個值也是有范圍的,所以我們要先取得其范圍。
000000-FFFFFF.
然后要轉(zhuǎn)換成十進(jìn)制的范圍
0-16777215
有了這個范圍就可以利用隨機數(shù),生成在這個范圍內(nèi)的色值了。當(dāng)然最后還是要轉(zhuǎn)成十六進(jìn)制,并且不要忘記在色值前面加"#"號
3.4下墜感
其實就是讓元素有,一個拋物線的變化,即讓元素的X和Y的值,同時間變化。
?。ㄔ谑褂胹etTimeout的時候,里面的this,不要指向錯了!~~)
在線演示:http://demo.jb51.net/js/2012/myyanhua/
打包下載:myyanhua_jb51.rar
相關(guān)文章
jQuery操作DOM_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了jQuery操作DOM,下面的DOM操作將圍繞上面的DOM樹進(jìn)行學(xué)習(xí)JQueryDOM操作,有興趣的可以了解一下2017-07-07基于jQuery的Spin Button自定義文本框數(shù)值自增或自減
這個jquery 插件可以讓你的文本框增加一個自增或自減的小按鈕,方便輸入數(shù)值的控制。2010-07-07使用jquery datatable和bootsrap創(chuàng)建表格實例代碼
這篇文章主要介紹了使用jquery-datatable和bootsrap創(chuàng)建表格的實例代碼,需要的朋友可以參考下2017-03-03jQuery學(xué)習(xí)筆記(2)--用jquery實現(xiàn)各種模態(tài)提示框代碼及項目構(gòu)架
想實現(xiàn)一個模態(tài)的框框,找了很多的jquery插件,都沒有碰到自己滿意的于是自己摸索了一個,接下來為大家介紹下實現(xiàn)的思路及代碼,希望對你有所幫助2013-04-04基于jQuery實現(xiàn)發(fā)送短信驗證碼后的倒計時功能(無視頁面關(guān)閉)
最近做了一個項目,其中有需求要求實現(xiàn)發(fā)送短信驗證碼后倒計時功能,其中有個難點:要求關(guān)閉頁面也進(jìn)行倒計時。好吧,下面小編把jquery 發(fā)送驗證碼倒計時的實現(xiàn)代碼分享給大家,大家可以參考下2016-09-09JQuery 1.3.2以上版本中出現(xiàn)pareseerror錯誤的解決方法
最近正在做一個系統(tǒng),測試組那邊不停的報告bug:后臺、前臺各種列表報告js彈出窗錯誤,內(nèi)容僅僅是一句“pareseerror”!2011-01-01