Effects-Custom
一、.animate()
經由設定CSS屬性來做成客製化動畫。
.animate( PlainObject properties [, duration ] [, String easing ] [, Function complete ] )
.animate( PlainObject properties, PlainObject options )
.animate()方法只支援CSS屬性是單一數值形式的內容,而字串形式的內容大部份都不支援。
.animate()方法所支援的CSS屬性皆可使用"show"、'hide"、"toggle"字串。
範例一、
當按下按紐時在一秒時間內,圖片由左向右位移50單位,透明度變至0.25。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.0.0.js"></script> <style> #book { position: relative; } </style> </head> <body> <div id="clickme"> Click here </div> <img id="book" src="http://www.cwb.gov.tw/V7/images/icon/cwbLogo04.png" alt="" width="100" height="123"> <script> $("#clickme").click(function () { $("#book").animate({ opacity: 0.25, left: "50", }, 1000, function () { // Animation complete. }); }); </script> </body> </html>
範例二、透明度使用toggle字串。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.0.0.js"></script> <style> #book { position: relative; } </style> </head> <body> <div id="clickme"> Click here </div> <img id="book" src="http://www.cwb.gov.tw/V7/images/icon/cwbLogo04.png" alt="" width="100" height="123"> <script> $("#clickme").click(function () { $("#book").animate({ opacity: "toggle", left: "50", }, 1000, function () { // Animation complete. }); }); </script> </body> </html>
範例三、可利用字串"+="或"-="來對每次.animate()觸發都做位移,而不是僅僅移到定位而已。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.0.0.js"></script> <style> #book { position: relative; } </style> </head> <body> <div id="clickme"> Click here </div> <img id="book" src="http://www.cwb.gov.tw/V7/images/icon/cwbLogo04.png" alt="" width="100" height="123"> <script> $("#clickme").click(function () { $("#book").animate({ left: "+=50", }, 1000, function () { // Animation complete. }); }); </script> </body> </html>
範例四、每一個屬性個別設定easing,在.animate()方法所支援的CSS屬性,
可以接受[ CSS values , easing ]陣列形態。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.0.0.js"></script> <style> #book { position: relative; } </style> </head> <body> <div id="clickme"> Click here </div> <img id="book" src="http://www.cwb.gov.tw/V7/images/icon/cwbLogo04.png" alt="" width="100" height="123"> <script> $("#clickme").click(function () { $("#book").animate({ width: ["toggle", "swing"], height: ["toggle", "swing"], opacity: "toggle" }, 5000, "linear", function () { $(this).after("<div>Animation complete.</div>"); }); }); </script> </body> </html>
二、.clearQueue()
請參考Data的第一項。
三、.delay()
用來指定動作與動作之間的時間間隔。
.delay( Integer duration [, String queueName ] )
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.0.0.js"></script> </head> <body> <div id="clickme"> Click here </div> <img id="book" src="http://www.cwb.gov.tw/V7/images/icon/cwbLogo04.png" alt="" width="100" height="123"> <script> // With the element initially hidden, we can show it slowly: $("#clickme").click(function () { $("#book").slideUp(300).delay("slow").fadeIn(400); }); </script> </body> </html>
注意,.delay()方法無法延遲.show()與.hide()的時間。
.delay()方法也接受字串參數 "slow"、"fast"。
四、.dequeue()
請參考Data的第三項。
五、.finish()
用來停止現在正在跑的動畫,直接跳到動畫結束點。
.finish( [ String queue ] )
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.0.0.js"></script> </head> <body> <div id="clickme"> Click here </div> <div id="finish"> finish </div> <img id="book" style="display:none;" src="http://www.cwb.gov.tw/V7/images/icon/cwbLogo04.png" alt="" width="100" height="123"> <script> $("#clickme").click(function () { $("#book").fadeIn(3000); }); $("#finish").click(function () { $("#book").finish(); }); </script> </body> </html>
六、jQuery.fx.interval
用來調整動畫每秒幾個frame或是每個frame花幾秒。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery.fx.interval demo</title> <style> div { width: 50px; height: 30px; margin: 5px; float: left; background: green; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p><input type="button" value="Run"></p> <div></div> <script> jQuery.fx.interval = 1000; $("input").click(function () { $("div").toggle(3000); }); </script> </body> </html>
jQuery.fx.interval的預設值是每個frame花13毫秒,
所以數值越低動畫越順暢,但也越耗CPU。
七、jQuery.fx.off
用來決定全域動畫是否關掉演示,預設值是false(不關掉)。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery.fx.off demo</title> <style> div { width: 50px; height: 30px; margin: 5px; float: left; background: green; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="button" value="Run"> <button>off</button> <div></div> <script> $("button").click(function () { $.fx.off = true; }); $("input").click(function () { $("div").toggle(1000); }); </script> </body> </html>
八、jQuery.speed()
用來提供動畫統一預設值,而不用再特別指定duration、easing、complete function
jQuery.speed( [duration ] [, Function settings ] )
jQuery.speed( [duration ] [, String easing ] [, Function complete ] )
jQuery.speed( PlainObject settings )
但我還沒有試成功過。
九、.queue()
請參考Data的第九項。
十、.stop()
停止現在正在跑的動畫。
有兩種多載方法
1、.stop( [ Boolean clearQueue ] [, Boolean jumpToEnd ] )
clearQueue:停止時也一併清掉queue裡的所有動畫,預設為false。
jumpToEnd:停止時直接將正在執行的動畫瞬間執行完畢,預設為false。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>queue demo</title> <style> div { margin: 3px; width: 40px; height: 40px; position: absolute; left: 0px; top: 30px; background: green; display: none; } div.newcolor { background: blue; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <button id="start">Start</button> <button id="stop">Stop</button> <div></div> <script> $("#start").click(function () { $("div") .show("slow") .animate({ left: "+=200" }, 5000) .queue(function () { $(this).addClass("newcolor").dequeue(); }) .animate({ left: '-=200' }, 1500) .queue(function () { $(this).removeClass("newcolor").dequeue(); }) .slideUp(); }); $("#stop").click(function () { $("div").stop(true, true); }); </script> </body> </html>
2、.stop( [ String queue ] [, Boolean clearQueue ] [, Boolean jumpToEnd ] )
第一個參數為指定哪一個queue名稱要被停止,
至於後兩個參數請參考上一個多載方法的說明。