jQuery下的動(dòng)畫(huà)處理總結(jié)
queue()/ dequeue()
這兩個(gè)方法就像Ajax的XMLHttpRequest對(duì)象一樣的隱蔽,不為常人所知。這兩個(gè)方法在動(dòng)畫(huà)處理的時(shí)候很有用,我們經(jīng)常會(huì)寫(xiě)一些這樣的代碼
$('#test').animate({
"width": "300px",
"height": "300px",
"opacity":"1"
});
這樣test div的height、width、opacity是同時(shí)變化的,有時(shí)候我們不希望同步執(zhí)行,而是形狀的變化和透明度的變化分開(kāi),先變成300*300的div,然后透明度再逐漸變化,我們需要這么寫(xiě)
$('#test').animate({
"width": "300px",
"height": "300px",
}, function () {
$('#test').animate({ "opacity": "1" });
});
同學(xué)們可以想象一下要是有十個(gè)動(dòng)畫(huà)流程,那代碼是什么樣的,queue()和dequeue()可以解決此類(lèi)問(wèn)題,為所有的流程方法見(jiàn)一個(gè)隊(duì)列,讓function依次調(diào)用,先看一下語(yǔ)法
queue( [queueName ], newQueue ) 操作欲執(zhí)行隊(duì)列方法
第一個(gè)參數(shù)是隊(duì)列名稱(chēng),不寫(xiě)的話默認(rèn)是fx
第二個(gè)參數(shù)可以是一個(gè)函數(shù)數(shù)組,存放所有隊(duì)列函數(shù),也可以是一個(gè)回掉函數(shù),用于向隊(duì)列中添加新函數(shù)
dequeue( [queueName ] ) 為匹配元素執(zhí)行隊(duì)列中的下一個(gè)function
每次調(diào)用此方法執(zhí)行隊(duì)列中下一函數(shù)
var q = [
function () {
$(this).animate({
"width": "200px",
"height":"200px"
}, next)
},
function () {
$(this).animate({
"width": "400px",
"height": "400px"
}, next);
}
];
function next(){
$('#test').dequeue('myQueue');
}
$('#test').queue('myQueue', q);
next();
上面代碼就是可以讓test div先變成200*200的,然后再變?yōu)?00*400的,每個(gè)動(dòng)畫(huà)都執(zhí)行回掉函數(shù),調(diào)用隊(duì)列中下一個(gè)方法,兩個(gè)動(dòng)畫(huà)依次執(zhí)行,如果在執(zhí)行期想再添加某個(gè)函數(shù)可以這樣
var q = [
function () {
$(this).animate({
"width": "200px",
"height":"200px"
}, next)
},
function () {
$(this).animate({
"width": "400px",
"height": "400px"
}, next);
}
];
function next(){
$('#test').dequeue('myQueue');
}
$('#test').queue('myQueue', q);
next();
$('#test').queue('myQueue',function () {
$(this).slideUp().dequeue('myQueue');
});
總而言之這兩個(gè)方法就是為了方便動(dòng)畫(huà)按照預(yù)定次序執(zhí)行
clearQueue() /stop()
這兩個(gè)方法主要是為了取消動(dòng)畫(huà)
clearQueue( [queueName ] ) 將隊(duì)列中函數(shù)清空
stop( [queue ] [, clearQueue ] [, jumpToEnd ] ) 用于停止正在進(jìn)行的動(dòng)畫(huà)
queue:正在進(jìn)行的動(dòng)畫(huà)隊(duì)列名稱(chēng)
clearQueue:默認(rèn)值為false,是否將隊(duì)列本身也清空
jumpToEnd:默認(rèn)值為false,是否立即執(zhí)行完動(dòng)畫(huà)
如果想停止剛才動(dòng)畫(huà)可以這么寫(xiě)
這樣寫(xiě)不會(huì)不會(huì)終止動(dòng)畫(huà),只是當(dāng)前動(dòng)畫(huà)執(zhí)行完后,不會(huì)再調(diào)用隊(duì)列中下一個(gè)動(dòng)畫(huà)(隊(duì)列被清空了嘛,沒(méi)有下一個(gè)了),如果想立即停止動(dòng)畫(huà),可以這么寫(xiě)
至于停止動(dòng)畫(huà)是暫停還是立即執(zhí)行完,就學(xué)要配置stop()的參數(shù)了
slideDown()/ slideUp()/ slideToggle()
slide效果在做動(dòng)畫(huà)的時(shí)候經(jīng)常會(huì)使用,尤其是菜單,這三個(gè)函數(shù)很簡(jiǎn)單,就是元素收起/伸展/自動(dòng)判斷收起伸展,但是其參數(shù)不僅僅是duration,我們還能加一些其他的控制,看看API中的介紹,這Sanger函數(shù)參數(shù)類(lèi)似,那slideUp舉例
slideUp( [duration ] [, easing ] [, complete ] ) easing是漸變方式,這個(gè)我從來(lái)沒(méi)有手工改動(dòng)過(guò),duration不寫(xiě)的話,默認(rèn)會(huì)用大概一秒的時(shí)間完成動(dòng)畫(huà)
slideUp(options)
options中常用的配置有
duration:動(dòng)畫(huà)時(shí)間
queue:這個(gè)看了上面自然會(huì)懂
step:動(dòng)畫(huà)過(guò)程中每次屬性改動(dòng)時(shí)執(zhí)行
complete:動(dòng)畫(huà)完成時(shí)執(zhí)行
start:動(dòng)畫(huà)開(kāi)始時(shí)執(zhí)行
always:動(dòng)畫(huà)被終止或者意外發(fā)生沒(méi)有執(zhí)行完時(shí)發(fā)生
這三個(gè)函數(shù)在執(zhí)行的時(shí)候會(huì)修改元素height,在sideUp()執(zhí)行完后會(huì)把height復(fù)原,并把diaplay設(shè)為none
fadeIn()/ fadeOut()/ fadeToggle()/ fadeTo()
fadeIn()/ fadeOut()/ fadeToggle() 的用法和slide系列類(lèi)似,不再一一說(shuō)明,只不過(guò)這三個(gè)函數(shù)修改的時(shí)元素的透明度,fadeOut()函數(shù)在執(zhí)行完后會(huì)將元素opacity復(fù)原,并把display屬性設(shè)為none
fadeTo( duration, opacity [, easing ] [, complete ] ) fadeTo()方法就沒(méi)有那么復(fù)雜了,但是fadeTO()的duration和opacity不是可省略的,必須寫(xiě)
show()/ hide()/ toggle()
這三個(gè)函數(shù)的用法和slide系列一樣,但是在效果上有幾點(diǎn)兒不同
1.如果參數(shù)duration不寫(xiě),那么回立即執(zhí)行沒(méi)有動(dòng)畫(huà)
2.這個(gè)動(dòng)畫(huà)同時(shí)修改height、width、opacity屬性
3.hide()執(zhí)行完成后會(huì)將height、width、opacity屬性還原,并把display設(shè)為none
animate()
有些復(fù)雜的動(dòng)畫(huà)靠上面幾個(gè)函數(shù)不能夠?qū)崿F(xiàn),這時(shí)候就是強(qiáng)大的animate派上用場(chǎng)的時(shí)候了,animate()有兩種用法
.animate( properties [, duration ] [, easing ] [, complete ] )
大部分屬性都不用解釋?zhuān)琾roperties是個(gè)json,屬性的值可以是字面量、function、”toggle”、簡(jiǎn)單表達(dá)式,如果是function會(huì)把返回值賦給屬性,熟悉jQuery的同學(xué)肯定明白“toggle”是什么,就是讓一個(gè)屬性在初始值和最小值之間切換,能夠使用toggle的屬性有width、height、opacity等包含數(shù)字值屬性,簡(jiǎn)單表達(dá)式是+=、-=等,比如可以這么些 “width”:”+=10px”。
$( "#block" ).animate({
width: "70%",
opacity: 0.4,
marginLeft: "0.6in",
fontSize: "3em",
borderWidth: "+=10px"
}, 1500 );
如果傳入了回掉函數(shù),該函數(shù)會(huì)在動(dòng)畫(huà)執(zhí)行完后調(diào)用
.animate( properties, options )
這種用法更為靈活,properties和前一個(gè)用法一樣,常用options有
duration:動(dòng)畫(huà)時(shí)間
queue:function隊(duì)列
step:每次屬性調(diào)整的回掉函數(shù)
complete:完成動(dòng)畫(huà)的回掉函數(shù)
start:動(dòng)畫(huà)開(kāi)始的時(shí)候調(diào)用
always:動(dòng)畫(huà)被終止或者意外發(fā)生沒(méi)有執(zhí)行完時(shí)發(fā)生
要不說(shuō)jQuery好用,上面這幾個(gè)配置是不是很熟悉呢
$( "#book" ).animate({
width: "toggle",
height: "toggle"
}, {
duration: 5000,
specialEasing: {
width: "linear",
height: "easeOutBounce"
},
complete: function() {
$( this ).after( "<div>Animation complete.</div>" );
}
});
hover()
嚴(yán)格說(shuō)這個(gè)并不是個(gè)動(dòng)畫(huà)函數(shù),但是由于低版本IE的hover對(duì)很多元素都不起作用,用CSS無(wú)法完成很多動(dòng)作,所以經(jīng)常需要使用JavaScript進(jìn)行haver事件的處理。
.hover( handlerIn(eventObject), handlerOut(eventObject) )
方法很簡(jiǎn)單,不多介紹了,這樣就能把mousein 和mouseout寫(xiě)在一起了。
- 基于Jquery和html5實(shí)現(xiàn)炫酷的3D焦點(diǎn)圖動(dòng)畫(huà)
- jquery+html5爛漫愛(ài)心表白動(dòng)畫(huà)代碼分享
- jQuery結(jié)合HTML5制作的愛(ài)心樹(shù)表白動(dòng)畫(huà)
- jQuery實(shí)現(xiàn)加入購(gòu)物車(chē)飛入動(dòng)畫(huà)效果
- jQuery實(shí)現(xiàn)圖像旋轉(zhuǎn)動(dòng)畫(huà)效果
- JQuery動(dòng)畫(huà)和停止動(dòng)畫(huà)實(shí)例代碼
- Jquery中使用show()與hide()方法動(dòng)畫(huà)顯示和隱藏圖片
- 基于jquery的direction圖片漸變動(dòng)畫(huà)效果
- CSS+jQuery實(shí)現(xiàn)的一個(gè)放大縮小動(dòng)畫(huà)效果
- jQuery+HTML5實(shí)現(xiàn)WebGL高性能煙花綻放動(dòng)畫(huà)效果【附demo源碼下載】
相關(guān)文章
JQuery EasyUI 結(jié)合ztrIee的后臺(tái)頁(yè)面開(kāi)發(fā)實(shí)例
下面小編就為大家?guī)?lái)一篇JQuery EasyUI 結(jié)合ztrIee的后臺(tái)頁(yè)面開(kāi)發(fā)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09jQuery獲取單選按鈕radio選中值與去除所有radio選中狀態(tài)的方法
下面小編就為大家?guī)?lái)一篇jQuery獲取單選按鈕radio選中值與去除所有radio選中狀態(tài)的方法。2017-05-05IDEA配置jQuery, $符號(hào)不再顯示黃色波浪線的問(wèn)題
這篇文章主要介紹了IDEA配置jQuery, $符號(hào)不再顯示黃色波浪線的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10基于jquery ui的alert,confirm方案(支持換膚)
這篇文章主要介紹了基于jquery ui的alert,confirm方案(支持換膚),修改自網(wǎng)友的源碼,有需要的小伙伴參考下。2015-04-04使用JQuery實(shí)現(xiàn)的分頁(yè)插件分享
本文給大家總結(jié)了幾種使用jQuery實(shí)現(xiàn)的分頁(yè)插件,效果非常不錯(cuò),有需要的小伙伴可以參考下。2015-11-11Tinymce+jQuery.Validation使用產(chǎn)生的BUG
在IE6下,當(dāng)頁(yè)面有advanced模式的Tinymce編輯器,并且,并且jquery.validation使用了jquery.metadata時(shí)會(huì)出現(xiàn)以下問(wèn)題2010-03-03