![jquery自定義動畫animate_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd1.gif)
![jquery自定義動畫animate_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd2.gif)
![jquery自定義動畫animate_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd3.gif)
![jquery自定義動畫animate_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd4.gif)
![jquery自定義動畫animate_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd/0418dfe9-68b3-45a9-87d9-2d88b9e2adfd5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 #box width: 100px; height: 100px; background-color: red; position:absolute; #pox width: 100px; height: 100px; background-color: green; position: absolute; top: 200px; box pox $(function () $(.button).click(function () $(#box).animate( left: 300px /要想使用left top bottom right這種方向性的屬性 先必須對#box元素設(shè)置CSS 絕
2、對定位 ) ) /自定義動畫中,每次開始運(yùn)動都必須是初始位置或初始狀態(tài),而有時我們想通過當(dāng)前位置或狀態(tài)下再進(jìn)行動畫。jQuery 提供了自定義動畫的累加、累減功能。 $(.button).click(function () $(#box).animate( left: +=50px /每點(diǎn)擊一次.button按鈕,#box元素就往左移動50px ) ) /-同步動畫 /一個CSS 變化就是一個動畫效果,下面的例子中,已經(jīng)有四個CSS 變化(分別是width,height,opacity,fontSize的變化)實現(xiàn)了多重動畫同步運(yùn)動的效果。(所謂多重同步運(yùn)動的效果就是,這四個css屬性的值在同
3、一時間,同時變化) $(.button).click(function () $(#box).animate( width: 300px, height: 200px, opacity:0.5, /透明度為0.5 注:透明度的值在0-1之間 fontSize:200px, /字體大小設(shè)為30px ) /第一個參數(shù):是一個對象,他是鍵值對的css ) /-列隊動畫 /通過回調(diào)函數(shù)現(xiàn)實隊列動畫。(效果就是:首先#box的寬度變?yōu)?00px 然后高度變?yōu)?00px,然后透明度變?yōu)?0%,字體大小變?yōu)?50px 最后彈出一個“完畢”) $(.button).click(function () $(#b
4、ox).animate( width: 300px, 1000, function() $(#box).animate(height:200px,1000,function() $(#box).animate(opacity:0.5,1000,function() $(#box).animate(fontSize:150px,1000,function()alert(完畢) ); ); ); ) /在同一個元素的基礎(chǔ)上,使用鏈?zhǔn)秸{(diào)用也可以實現(xiàn)列隊動畫 $(.button).click(function () $(#box) .animate( width: 300px , 1000) .ani
5、mate( height: 200px , 1000) .animate( opacity: 0.5 , 1000) .animate( fontSize: 150px , 1000, function () alert(列隊動畫執(zhí)行完畢) ); /在同一個元素的基礎(chǔ)上,通過依次順序?qū)崿F(xiàn)列隊動畫 (如果有多個元素則不能實現(xiàn),兩個元素之間的動畫是同步的。) $(.button).click(function () $(#box).animate( width: 300px , 1000); $(#box).animate( height: 200px , 1000); $(#box).anima
6、te( opacity: 0.5 , 1000); $(#box).animate( fontSize: 150px , 1000, function () alert(列隊動畫執(zhí)行完畢); ) /如果有多個元素則不能實現(xiàn) 不信請看下面代碼 (通過執(zhí)行下面這段代碼,我們發(fā)現(xiàn)#box 與#pox這兩個元素的動畫是同時執(zhí)行的,屬于#box的那兩段動畫是先執(zhí)行 $(#box).animate( width: 300px , 1000)然后再執(zhí)行(#box).animate( opacity: 0.5 , 1000); 他們兩個有列隊動畫的效果) 而屬于#pox的兩段動畫是先執(zhí)行 $(#pox).an
7、imate( height: 200px , 1000)然后再執(zhí)行 $(#pox).animate( fontSize: 150px , 1000)他們兩個有列隊動畫的效果。 但是 $(#box).animate( width: 300px , 1000)與$(#pox).animate( height: 200px , 1000); 同時執(zhí)行的。 $(#box).animate( opacity: 0.5 , 1000)與$(#pox).animate( fontSize: 150px , 1000)是同時執(zhí)行的。 /前面說了這么一大堆 其實就是: /#box的第一條和第三條是列隊動畫 /#
8、pox的第二條和第四條是列隊動畫 /#box的第一條和#pox的第二條是同步動畫 /#box的第三條和#pox的第四條是同步動畫 $(.button).click(function () $(#box).animate( width: 300px , 1000); $(#pox).animate( height: 200px , 1000); $(#box).animate( opacity: 0.5 , 1000); $(#pox).animate( fontSize: 150px , 1000, function () alert(列隊動畫執(zhí)行完畢); ) /那我們現(xiàn)在的需求是:不管你有幾
9、個元素,我都要他們依次實現(xiàn)列隊動畫效果。(測試了一下,只能用這種回調(diào)函數(shù)嵌套的方式來實現(xiàn)了) $(.button).click(function () $(#box).animate( width: 300px , 1000, function () $(#pox).animate( height: 200px , 1000, function () $(#box).animate( height: 200px, 1000, function () $(#pox).animate( fontSize: 150px , 1000, function () alert(列隊動畫執(zhí)行完畢) ); )
10、 ) ) ) / -動畫與非動畫 進(jìn)行隊列 【queue()】 /我們知道動畫可以有列隊效果。但是一個普通的css(比如改變背景顏色)如果實現(xiàn)與動畫進(jìn)行列隊呢? $(.button).click(function () $(#box).slideUp(1000).slideDown(1000).css(background, yellow) ) /本來我們是想要實現(xiàn)隊列動畫的,也就是先讓#box滑動隱藏,然后再讓它滑動顯示,最后讓它改變顏色??墒俏覀冞\(yùn)行這段呢代碼,我們看到第一時間就執(zhí)行了css(background,yellow)這段代碼。 /通過上面的代碼我們了解到 css()方法不是動畫
11、方法,會和第一個動畫同時執(zhí)行。也就是說非動畫不能列隊。 /現(xiàn)在問題又來了。我現(xiàn)在想要實現(xiàn)列隊動畫,也想非動畫和動畫一起列隊怎么辦呢? 其實我們可以使用回調(diào)函數(shù)實現(xiàn)的。請看下面的代碼 $(.button).click(function () $(#box) .slideUp(1000) .slideDown(1000, function () $(this).css(background, yellow) ) .hide(3000); ) /但如果上面這樣的話,當(dāng)列隊動畫繁多的時候,可讀性不但下降,而原本的動畫方法不夠清晰。所以,我們的想法是每個操作都是自己獨(dú)立的方法。那么jQuery 提供了一
12、個類似于回調(diào)函數(shù)的方法:.queue() $(.button).click(function () /三個動畫。 $(#box) .slideUp(1000) .slideDown(1000) .queue(function () $(this).css(background, yellow);) ) /現(xiàn)在,我們想繼續(xù)在.queue()方法后面再增加一個隱藏動畫,這時發(fā)現(xiàn)居然無法實現(xiàn)。這是.queue()特性導(dǎo)致的。有兩種方法可以解決這個問題,jQuery 的.queue()的回調(diào)函數(shù)可以傳遞一個參數(shù),這個參數(shù)是next 函數(shù),在結(jié)尾處調(diào)用這個next()方法即可再鏈?zhǔn)綀?zhí)行列隊動畫。 /鏈?zhǔn)?/p>
13、編程實現(xiàn)隊列動畫 $(.button).click(function () /四個動畫 $(#box) .slideUp(1000) .slideDown(1000) .queue(function (next) /這個next是一個函數(shù) $(this).css(background, yellow); next();) .hide(1000); ); /順序編程實現(xiàn)隊列動畫 我們看到使用順序調(diào)用的列隊,逐個執(zhí)行,非常清晰 $(.button).click(function () $(#box).slideUp(1000); $(#box).slideDown(1000); $(#box).q
14、ueue(function (next) $(this).css(background, yellow); next(); ); $(#box).hide(1000); ); /因為next 函數(shù)是jQuery1.4 版本以后才出現(xiàn)的,而之前我們普遍使用的是.dequeue()方法。意思為執(zhí)行下一個元素列隊中的函數(shù)。 /使用.dequeue()方法執(zhí)行下一個函數(shù)動畫 /$(.button).click(function () / $(#box).slideUp(slow).slideDown(slow).queue(function () / $(this).css(background, o
15、range); / $(this).dequeue(); /相當(dāng)于上面的那句next() 只是這里的function()括號里不像上面那樣需要傳遞一個next函數(shù) / ).hide(1000) /); /-動畫的清除 【clearQueue()】 /jQuery 還提供了一個清理列隊的功能方法:.clearQueue()。把它放入一個列隊的回調(diào)函 數(shù)或.queue()方法里,就可以把剩下為執(zhí)行的列隊給移除。 /清理動畫列隊 /假如我想在執(zhí)行完第二個動畫那就就不再執(zhí)行了。那么只要在第二個動畫的回調(diào)函數(shù)哪里添加一句$(this).clearQueue()就可以停止后面的列隊動畫了 $(.butto
16、n).click(function () $(#box) .slideUp(1000) .slideDown(1000, function () $(this).clearQueue() ) .queue(function (next) $(this).css(background, yellow); next() ) .hide(1000); ) /那么如果獲取列隊動畫的長度呢? function getQueueCount() return $(#box).queue(fx).length; /獲取當(dāng)前列隊的長度,fx 是默認(rèn)列隊的參數(shù) /用法 $(.button).click(funct
17、ion () /下面這段代碼總共有slideUp,slideDown,queue,hide這四個動畫 $(#box) .slideUp(1000, function () alert(getQueueCount() ) /執(zhí)行到這一步的時候會打印出:4 它后面還有三個動畫,所以下一步的時候會打印出3 .slideDown(1000, function () alert(getQueueCount() ) /執(zhí)行到這一步的時候會打印出:3 .queue(function (next) alert(getQueueCount(); $(this).css(background, yellow);
18、next() ) /執(zhí)行到這一步的時候會打印出:2 .hide(1000, function () alert(getQueueCount() ); /執(zhí)行到這一步的時候會打印出:1 ); /-動畫的停止【stop()】 /很多時候需要停止正在運(yùn)行中的動畫,jQuery 為此提供了一個.stop()方法。它有兩個可選參數(shù):.stop(clearQueue, gotoEnd);clearQueue 傳遞一個布爾值,代表是否清空未執(zhí)行完的動畫列隊,gotoEnd 代表是否直接將正在執(zhí)行的動畫跳轉(zhuǎn)到末狀態(tài)。 $(.button).click(function () $(#box) .animate(
19、left:1000px ,3000) ) $(.stop).click(function () $(#box).stop(); /將#box這個元素的動畫停止掉。沒有參數(shù)的stop()方法只是單純的停止動畫 ) /那下面再來了解下,列隊動畫的停止 $(.button).click(function () $(#box).animate( left: 300px ,1000) .animate( bottom: 300px , 1000) .animate( width: 300px , 1000) .animate( height: 300px , 1000) ) /$(.stop).clic
20、k(function () / $(#box).stop(); / 如果用沒有參數(shù)的stop()方法去停止有列隊動畫,那么只會停止掉第一個列隊動畫,后面的列隊動畫會繼續(xù)執(zhí)行。 /) /那么現(xiàn)在我想當(dāng)我點(diǎn)擊停止按鈕的時候,我就需要整個將列隊動畫停止下來,而不是僅僅停止第一個,怎么辦呢? 答案是:我們可以給stop()方法加參數(shù) /stop()方法有兩個可選參數(shù): /第一個可選參數(shù),如果為true,就代表停止并清除掉后面的隊列動畫。即:動畫完全停止(默認(rèn)值為false) /第二個可選參數(shù),如果為true,就代表停止并清除掉后面的隊列動畫,并且當(dāng)前動畫會立刻跳轉(zhuǎn)到當(dāng)前這條動畫執(zhí)行完畢的末尾位置(默認(rèn)
21、為false) $(.stop).click(function () $(#box).stop(true, true); ) /-動畫的延遲【delay()】 $(.button).click(function () $(#box).delay(2000) /如果delay(2000) 直接寫在$(#box)元素后面,就表示延遲2秒再執(zhí)行動畫 .animate( left: 300px , 1000) .animate( bottom: 300px , 1000) .animate( width: 300px , 1000).delay(3000) / 寫在這里表示等animate( widt
22、h: 300px , 1000)這段代碼執(zhí)行完后,延遲3秒再執(zhí)行下面的代碼 .animate( height: 300px , 1000) ) /-獲取當(dāng)前正在執(zhí)行的動畫 【:animated 過濾器】 $(.button).click(function () /$(#box).slideUp(1000, function abc() / $(this).slideToggle(1000, abc); /無限循環(huán)的調(diào)用自己。實現(xiàn)動畫不停的執(zhí)行。 /) /或者用這以下這種方式也可以實現(xiàn) 動畫不停的自執(zhí)行 $(#box).slideToggle(1000, function () $(this).slideToggle(1000, arguments.callee)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國表面肌電測試系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國一次鋰亞硫酰氯電池行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國動態(tài)圖像粒度粒形分析系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2023年全球及中國無人駕駛接駁小巴行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025小飯店員工的勞動合同范本
- 出境旅游合同書
- 2025辦公室裝修合同書集錦
- 房產(chǎn)股權(quán)轉(zhuǎn)讓合同
- 存量房買賣合同合同范本
- 陸路貨物運(yùn)輸合同承運(yùn)人定義年
- 2023學(xué)年度第一學(xué)期高三英語備課組工作總結(jié)
- 臨建標(biāo)準(zhǔn)化圖集新版
- 安監(jiān)人員考核細(xì)則(2篇)
- 生活老師培訓(xùn)資料課件
- 2020年新概念英語第一冊lesson97-102單元檢測
- 腹主動脈瘤(護(hù)理業(yè)務(wù)學(xué)習(xí))
- 注射用醋酸亮丙瑞林微球
- 大學(xué)生就業(yè)指導(dǎo)PPT(第2版)全套完整教學(xué)課件
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 湖南大一型抽水蓄能電站施工及質(zhì)量創(chuàng)優(yōu)匯報
- envi二次開發(fā)素材包-idl培訓(xùn)
評論
0/150
提交評論