本文最初發表於博客園,並在GitHub上持續更新前端的系列文章。歡迎在GitHub上關注我,一塊兒入門和進階前端。javascript
如下是正文。css
jQuery提供的一組網頁中常見的動畫效果,這些動畫是標準的、有規律的效果;同時還提供給咱們了自定義動畫的功能。html
方式一:前端
$("div").show();
解釋:無參數,表示讓指定的元素直接顯示出來。其實這個方法的底層就是經過display: block;
實現的。java
方式二:jquery
$("div").show(2000);
解釋:經過控制元素的寬高、透明度、display屬性,逐漸顯示,2秒後顯示完畢。git
效果以下:github
方式三:json
$("div").show("slow");
參數能夠是:微信
slow 慢:600ms
normal 正常:400ms
fast 快:200ms
解釋:和方式二相似,也是經過控制元素的寬高、透明度、display屬性,逐漸顯示。
方式四:
//show(毫秒值,回調函數; $("div").show(5000,function () { alert("動畫執行完畢!"); });
解釋:動畫執行完後,當即執行回調函數。
總結:
上面的四種方式幾乎一致:參數能夠有兩個,第一個是動畫的執行時長,第二個是動畫結束後執行的回調函數。
方式參照上面的show()方法的方式。以下:
$(selector).hide(); $(selector).hide(1000); $(selector).hide("slow"); $(selector).hide(1000, function(){});
顯示和隱藏的來回切換:
顯示和隱藏的來回切換採用的是toggle()方法:就是先執行show(),再執行hide()。
一樣是四種方式:
$(selector).toggle();
一、滑入動畫效果:(相似於生活中的捲簾門)
$(selector).slideDown(speed, 回調函數);
解釋:下拉動畫,顯示元素。
注意:省略參數或者傳入不合法的字符串,那麼則使用默認值:400毫秒(一樣適用於fadeIn/slideDown/slideUp)
2 滑出動畫效果:
$(selector).slideUp(speed, 回調函數);
解釋:上拉動畫,隱藏元素。
三、滑入滑出切換動畫效果:
$(selector).slideToggle(speed, 回調函數);
參數解釋同show()方法。
舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> div { width: 300px; height: 300px; display: none; background-color: pink; } </style> <script src="jquery-1.11.1.js"></script> <script> $(function () { //點擊按鈕後產生動畫 $("button:eq(0)").click(function () { //滑入動畫: slideDown(毫秒值,回調函數[顯示完畢執行什麼]); $("div").slideDown(2000, function () { alert("動畫執行完畢!"); }); }) //滑出動畫 $("button:eq(1)").click(function () { //滑出動畫:slideUp(毫秒值,回調函數[顯示完畢後執行什麼]); $("div").slideUp(2000, function () { alert("動畫執行完畢!"); }); }) $("button:eq(2)").click(function () { //滑入滑出切換(一樣有四種用法) $("div").slideToggle(1000); }) }) </script> </head> <body> <button>滑入</button> <button>滑出</button> <button>切換</button> <div></div> </body> </html>
一、淡入動畫效果:
$(selector).fadeIn(speed, callback);
做用:讓元素以淡淡的進入視線的方式展現出來。
二、淡出動畫效果:
$(selector).fadeOut(1000);
做用:讓元素以漸漸消失的方式隱藏起來
三、淡入淡出切換動畫效果:
$(selector).fadeToggle('fast', callback);
做用:經過改變透明度,切換匹配元素的顯示或隱藏狀態。
參數的含義同show()方法。
代碼舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> div { width: 300px; height: 300px; display: none; /*opacity: 1;*/ background-color: pink; } </style> <script src="jquery-1.11.1.js"></script> <script> $(function () { //點擊按鈕後產生動畫 $("button:eq(0)").click(function () { // //淡入動畫用法1: fadeIn(); 不加參數 $("div").fadeIn(); // //淡入動畫用法2: fadeIn(2000); 毫秒值 // $("div").fadeIn(2000); // //經過控制 透明度和display //淡入動畫用法3: fadeIn(字符串); slow慢:600ms normal正常:400ms fast快:200ms // $("div").fadeIn("slow"); // $("div").fadeIn("fast"); // $("div").fadeIn("normal"); //淡入動畫用法4: fadeIn(毫秒值,回調函數[顯示完畢執行什麼]); // $("div").fadeIn(5000,function () { // alert("動畫執行完畢!"); // }); }) //滑出動畫 $("button:eq(1)").click(function () { // //滑出動畫用法1: fadeOut(); 不加參數 // $("div").fadeOut(); // //滑出動畫用法2: fadeOut(2000); 毫秒值 // $("div").fadeOut(2000); //經過這個方法實現的:display: none; // //經過控制 透明度和display //滑出動畫用法3: fadeOut(字符串); slow慢:600ms normal正常:400ms fast快:200ms // $("div").fadeOut("slow"); // $("div").fadeOut("fast"); // $("div").fadeOut("normal"); //滑出動畫用法1: fadeOut(毫秒值,回調函數[顯示完畢執行什麼]); // $("div").fadeOut(2000,function () { // alert("動畫執行完畢!"); // }); }) $("button:eq(2)").click(function () { //滑入滑出切換 //一樣有四種用法 $("div").fadeToggle(1000); }) $("button:eq(3)").click(function () { //改透明度 //一樣有四種用法 $("div").fadeTo(1000, 0.5, function () { alert(1); }); }) }) </script> </head> <body> <button>淡入</button> <button>淡出</button> <button>切換</button> <button>改透明度爲0.5</button> <div></div> </body> </html>
$(selector).animate({params}, speed, callback);
做用:執行一組CSS屬性的自定義動畫。
第一個參數表示:要執行動畫的CSS屬性(必選)
第二個參數表示:執行動畫時長(可選)
第三個參數表示:動畫執行完後,當即執行的回調函數(可選)
代碼舉例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> div { position: absolute; left: 20px; top: 30px; width: 100px; height: 100px; background-color: pink; } </style> <script src="jquery-1.11.1.js"></script> <script> jQuery(function () { $("button").click(function () { var json = {"width": 500, "height": 500, "left": 300, "top": 300, "border-radius": 100}; var json2 = { "width": 100, "height": 100, "left": 100, "top": 100, "border-radius": 100, "background-color": "red" }; //自定義動畫 $("div").animate(json, 1000, function () { $("div").animate(json2, 1000, function () { alert("動畫執行完畢!"); }); }); }) }) </script> </head> <body> <button>自定義動畫</button> <div></div> </body> </html>
$(selector).stop(true, false);
裏面的兩個參數,有不一樣的含義。
第一個參數:
true:後續動畫不執行。
false:後續動畫會執行。
第二個參數:
true:當即執行完成當前動畫。
false:當即中止當前動畫。
PS:參數若是都不寫,默認兩個都是false。實際工做中,直接寫stop()用的多。
效果演示:
當第二個參數爲true時,效果以下:
當第二個參數爲false時,效果以下:
這個後續動畫咱們要好好理解,來看個例子。
案例:鼠標懸停時,彈出下拉菜單(下拉時帶動畫)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } ul { list-style: none; } .wrap { width: 330px; height: 30px; margin: 100px auto 0; padding-left: 10px; background-color: pink; } .wrap li { background-color: green; } .wrap > ul > li { float: left; margin-right: 10px; position: relative; } .wrap a { display: block; height: 30px; width: 100px; text-decoration: none; color: #000; line-height: 30px; text-align: center; } .wrap li ul { position: absolute; top: 30px; display: none; } </style> <script src="jquery-1.11.1.js"></script> <script> //入口函數 $(document).ready(function () { //需求:鼠標放入一級li中,讓他裏面的ul顯示。移開隱藏。 var jqli = $(".wrap>ul>li"); //綁定事件 jqli.mouseenter(function () { $(this).children("ul").stop().slideDown(1000); }); //綁定事件(移開隱藏) jqli.mouseleave(function () { $(this).children("ul").stop().slideUp(1000); }); }); </script> </head> <body> <div class="wrap"> <ul> <li> <a href="javascript:void(0);">一級菜單1</a> <ul> <li><a href="javascript:void(0);">二級菜單1</a></li> <li><a href="javascript:void(0);">二級菜單2</a></li> <li><a href="javascript:void(0);">二級菜單3</a></li> </ul> </li> <li> <a href="javascript:void(0);">一級菜單1</a> <ul> <li><a href="javascript:void(0);">二級菜單1</a></li> <li><a href="javascript:void(0);">二級菜單2</a></li> <li><a href="javascript:void(0);">二級菜單3</a></li> </ul> </li> <li> <a href="javascript:void(0);">一級菜單1</a> <ul> <li><a href="javascript:void(0);">二級菜單1</a></li> <li><a href="javascript:void(0);">二級菜單2</a></li> <li><a href="javascript:void(0);">二級菜單3</a></li> </ul> </li> </ul> </div> </body> </html>
效果以下:
上方代碼中,關鍵的地方在於,用了stop函數,再執行動畫前,先停掉以前的動畫。
若是去掉stop()函數,效果以下:(不是咱們指望的效果)
當調用stop()方法後,隊列裏面的下一個動畫將會當即開始。 可是,若是參數clearQueue被設置爲true,那麼隊列面剩餘的動畫就被刪除了,而且永遠也不會執行。
若是參數jumpToEnd被設置爲true,那麼當前動畫會中止,可是參與動畫的每個CSS屬性將被當即設置爲它們的目標值。好比:slideUp()方法,那麼元素會當即隱藏掉。若是存在回調函數,那麼回調函數也會當即執行。
注意:若是元素動畫尚未執行完,此時調用sotp()方法,那麼動畫將會中止。而且動畫沒有執行完成,那麼回調函數也不會被執行。
想學習<font color=#0000ff>代碼以外的軟技能</font>?不妨關注個人微信公衆號:生命團隊(id:vitateam
)。
掃一掃,你將發現另外一個全新的世界,而這將是一場美麗的意外: