jQuery系列 第五章 jQuery框架動畫特效

第五章 jQuery框架動畫特效

5.1 jQuery動畫特效說明

jQuery框架中爲咱們封裝了衆多的動畫和特效方法,只須要調用對應的動畫方法傳遞合適的參數,就可以方便的實現一些炫酷的效果,並且jQuery框架還支持自定義各類動畫效果。css

jQuery中的動畫效果主要有如下方法html

① 顯示和隱藏動畫
② 展開和收起動畫
③ 淡入和淡出動畫
④ 自定義動畫效果jquery


5.2 顯示和隱藏動畫

jQuery框架中爲咱們提供了專門的方法來控制讓標籤顯示或者是隱藏。標籤的顯示和隱藏在開發中相對來講是比較常見的操做,若是使用原生的JavaScript代碼來控制標籤的顯示或者是隱藏,那麼咱們主要經過控制該標籤的display屬性值來實現。框架

jQuery中控制標籤顯示和隱藏的動畫方法ide

① show() 控制讓標籤顯示的動畫方法
② hide() 控制讓標籤隱藏的動畫方法
③ toggle()控制讓標籤顯示|隱藏效果切換的動畫方法函數

ex:以原生的方法來控制標籤的顯示或隱藏動畫

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <!--....-->
 5     <style>
 6  #demoID{
 7  width: 200px;
 8  height: 50px;
 9  background: red;
10         }
11     </style>
12     <script src="jquery-3.1.1.js"></script>
13 </head>
14 <body>
15 <div id="demoID"></div>
16 <script>
17     //控制標籤顯示或隱藏的方式(1)
18     //document.getElementById("demoID").style.display = "none";
19     //document.getElementById("demoID").style.display = "block";
20     //控制標籤顯示或隱藏的方式(2)
21     //$("#demoID").css("display","none");
22  $("#demoID").css("display","block"); 23 </script>
24 </body>
25 </html>

顯示和隱藏動畫方法語法spa

$("selector").show(speed,callBack)
$("selector").hide(speed,callBack)插件

參數說明:code

第一個參數:可選的參數。speed表示執行動畫的速度,該速度可使用系統默認提供的值,也能夠本身以數字的形式傳入。

系統默認提供的值有:「slow」、「normal」、「fast」,對應的速度分別爲0.6秒、0.4秒和0.2秒。

本身以數字的形式傳遞則:傳遞如1000|3000相似的值,單位爲毫秒,若是傳遞1000表示動畫的執行速度爲1秒。

第二個參數:可選的參數。callBack爲動畫完成時執行的回調函數,該函數每一個元素執行一次。

切換動畫方法語法

調用方式[1] => $("selector").toggle()
調用方式[2] => $("selector").toggle(speed,callBack)

方法參數說明:

(1)調用方式[1],不傳遞參數。切換當前元素(標籤)的可見狀態,若是當前元素的狀態爲不可見,則切換爲可見,若是當前元素的狀態爲可見,則切換爲不可見。

(2)調用方式[2],第一個可選的參數爲動畫執行的速度,第二個可選的參數爲動畫執行完後執行的回調函數。

總結

show方法和hide方法用來控制標籤的顯示或者是隱藏,內部的實現邏輯是同時改變標籤的寬度、高度和透明度


5.3 展開和收起動畫

jQuery框架中,爲咱們提供實現滑動效果的方法,slideDown和slideUp方法分別能夠用來控制標籤展開和收起。

展開和收起動畫方法語法

slideDown(speed,callBack);
slideUp(speed,callBack)
slideToggle(speed,callBack)

方法解釋

slideDown方法的功能是設置讓指定標籤的高度從頂部向底部增長,以呈現出一種展開的動畫效果,元素的其餘屬性不會發生任何變化。

sldeUp方法的功能是設置讓指定標籤的高度從底部向頂部減少,僅僅改變標籤的高度,其餘的屬性並不會改變。

slideToggle方法用來切換所選擇元素的高度,若是當前標籤的高度不爲0,那麼調用該方法後就會把標籤的高度過渡爲0,實現收起的效果,不然就實現展開的效果。

注意:不管是展開仍是收起的動畫方法,他們的動畫效果都僅僅只會改變(增長或減少)標籤的高度。

參數說明

第一個參數:動畫執行的時間,同show方法。
第二個參數:動畫執行完畢的回調函數,能夠省略,同show方法。

代碼示例

 1 <body>
 2 <div>我是div</div>
 3 <button>展開</button>
 4 <button>收起</button>
 5 <button>切換</button>
 6 <script>
 7  $(function () {  8  $("button").eq(0).click(function () {  9  $("div").slideDown(2000,function () { 10  console.log("展開"); 11  }); 12  }) 13  $("button").eq(1).click(function () { 14  $("div").slideUp(2000); 15  }) 16  $("button").eq(2).click(function () { 17  $("div").slideToggle(1000,function () { 18  alert("切換動畫指定完畢") 19  }); 20  }) 21  }) 22 </script>
23 </body>

5.4 淡入和淡出動畫

jQuery框架中還提供了淡入和淡出的動畫方法,這兩個方法分別是fadeIn和fadeOut。

淡入和淡出動畫方法語法

fadeIn(speed,callBack);
fadeOut(speed,callBack)
fadeToggle(speed,callBack)
fadeTo(speed,opactity,callBack)

方法說明:

淡入淡出方法的內部實現原理是控制標籤的透明度,經過改變選中標籤的透明度來實現淡入和淡出的動畫效果,並不修改其餘的屬性。

fadeIn()方法的做用是淡入動畫,即改變標籤的透明度讓標籤慢慢的顯示出來。

fadeOut()方法的做用是淡出動畫,即改變標籤的透明度讓標籤慢慢的消失(透明度爲0)。

fadeToggle()方法的做用是切換動畫,若是當前標籤的透明度不爲0,那麼就執行淡出動畫,不然就執行淡入動畫。

fadeTo()方法的做用是淡入到,即便用動畫效果實現將標籤的透明度設置爲指定的值。

備註:標籤透明度的取值範圍爲0.0~1.0。

參數說明:

speed參數:動畫執行的速度,單位爲毫秒。
callBack參數:動畫執行完畢的回調函數,可選。
opacity參數:指定的標籤透明度(0.0~1.0)。

代碼示例

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="JS/jquery-3.2.1.js"></script>
 7     <style>
 8  div{
 9  width: 400px;
10  height: 200px;
11  background: red;
12         }
13     </style>
14 </head>
15 <body>
16 <div>我是div</div>
17 <button>淡入</button>
18 <button>淡出</button>
19 <button>切換</button>
20 <button>惦記我</button>
21 <script>
22     //fadeIn:淡入
23     //fadeOut:淡出
24     //fadeToggle切換
25     //fadeTo:淡入淡出到...0.5
26  $(function () { 27         //01 獲取頁面中指定的按鈕,添加點擊事件
28  $("button:eq(0)").click(function () { 29             //02 點擊按鈕後,獲取頁面中的div標籤,設置動畫
30             //第一個參數:速度
31             //第二個參數:回調
32  $("div").fadeIn(2000,function () { 33  alert("顯示完成"); 34  }); 35  }) 36  $("button:eq(1)").click(function () { 37  $("div").fadeOut(1000,function () { 38  alert("淡出") 39  }); 40  }) 41  $("button:eq(2)").click(function () { 42  $("div").fadeToggle(); 43  }) 44  $("button:eq(3)").click(function () { 45             //第一個參數:速度
46             //第二個參數:目標值
47             //第三個參數:回調
48  $("div").fadeTo(1000,0.5,function () { 49  alert("執行動畫完畢") 50  }); 51  }) 52  }) 53 </script>
54 </body>
55 </html>

5.5 自定義動畫

jQuery框架中自己已經爲咱們封裝好了一些簡單的控制標籤寬高、透明度相關的方法,如顯示和隱藏、展開和收起、淡入和淡出,除了這些方法以外,jQuery還爲咱們提供了animate()方法,容許咱們自定義動畫效果,經過一些設置咱們能夠實現更加複雜的動畫效果,

自定義動畫的語法

animate(params,speed,easing,callBack)

參數說明:
第一個參數:params是一個對象。在該對象中以鍵值對的方式來要控制的屬性樣式和對應的值表示。

第二個參數:speed速度,能夠是默認字符串中的某個(「slow」 「normal」 「fast」)或者是自定義的數字。

第三個參數:easing爲動畫插件使用的可選參數,用來控制動畫的表現效果,一般有linear和swing等固定值。

第四個參數:動畫執行完畢後的回調函數。

代碼示例

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7  div{
 8  width: 200px;
 9  height: 50px;
10  background: red;
11         }
12     </style>
13 </head>
14 <body>
15 <!--
16  animate({},timer,fn) 17  第一個參數:目標對象 18  第二個參數:速度 19  第三個參數:回調函數 20 -->
21 <div>我是個好人</div>
22 <button>
23  喜歡我就點我吧 24 </button>
25 <button>
26  喜歡我就點我吧2 27 </button>
28 <script src="js/jquery-3.2.1.js"></script>
29 <script>
30  $(function () { 31  $("button:eq(0)").click(function () { 32  $("div").animate({ 33  width:"+=50", 34  height:"+=100"
35  },1000); 36  }) 37  $("button:eq(1)").click(function () { 38             //01 直接設置目標值:速度和回調函數能夠被省略
39             // $("div").animate({
40 // width:400,
41 // height:100
42 // },2000,function () {
43 // alert("執行完畢");
44 // })
45             //02 第二種用法
46             // $("div").animate({
47             // width:"+=50",
48             // height:"+=100"
49             // },1000);
50             //03 動畫切換(若是有值那麼就設置爲0,不然就恢復)
51  $("div").animate({ 52  width:"toggle", 53  height:"+=100"
54  },1000); 55  }) 56  }) 57 </script>
58 </body>
59 </html>

動畫隊列、動畫中止和動畫延遲

動畫隊列:若是某個標籤身上要調用多個動畫相關方法,即須要展現多個動畫效果,那麼全部的這些動畫效果並不會同一時刻發生,而是須要在隊列中排隊,而後按照隊列中動畫效果的順序依次展示。

動畫中止:在執行動畫的時候,能夠經過stop()方法來中止動畫。中止動畫的語法爲:

stop(clearQueue,gotoEnd)

方法和參數說明:

stop方法的功能是中止指定標籤中正在執行的動畫,其中第一個參數clearQueue爲可選參數,傳遞一個布爾類型的值,表示是否中止正在執行的動畫。第二個參數gotoEnd也是可選參數,傳遞一個布爾類型的值,表示是否當即完成正在執行的動畫。

動畫延遲:設置一個延時的值來推遲後續隊列中動畫的執行,能夠傳遞延遲的具體時間,單位爲毫秒。

代碼示例01

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7  div{
 8  width: 200px;
 9  height: 200px;
10  background: yellow;
11         }
12     </style>
13 </head>
14 <body>
15 <div>
16 </div>
17 <button>按鈕</button>
18 <script src="js/jquery-3.2.1.js"></script>
19 <script>
20  $(function () { 21  $("button").click(function () { 22  $("div").animate({ 23  width:"50px"
24  }) 25  .animate({ 26  height:50
27  }) 28  .delay(2000) 29  .animate({ 30  height:300
31  }) 32  .animate({ 33  width:400
34  }) 35  }) 36  }) 37 </script>
38 </body>
39 </html>

代碼示例02

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7  div{
 8  width: 50px;
 9  height: 50px;
10  background: green;
11         }
12     </style>
13 </head>
14 <body>
15 <div>
16 </div>
17 <button>按鈕</button>
18 <script src="js/jquery-3.2.1.js"></script>
19 <script>
20  $(function () { 21         //01 當頁面加載完畢就執行動畫效果
22  $("div").animate({ 23  width:"400px"
24  },2000) 25  .animate({ 26  height:200
27  },1000) 28  .delay(1000) 29  .animate({ 30  height:50
31  }) 32  .animate({ 33  width:50
34  }) 35         //02 當點擊按鈕的時候中止動畫
36  $("button").click(function () { 37             //01 沒有傳遞參數:結束當前的動畫,繼續執行後面的動畫
38             //$("div").stop();
39             //02 傳遞1參數:
40             // true:全部的動畫所有結束
41             // false:結束當前的動畫,繼續執行後面的動畫
42             //$("div").stop(true);
43             //$("div").stop(false);
44             //03 傳遞2參數:
45             //true true : 馬上結束到達當前動畫的終點,後面的再也不執行
46             //true false:全部的動畫所有結束
47             //false false:結束當前的動畫,繼續執行後面的動畫
48             //false true : 馬上結束到達當前動畫的終點,後面的繼續執行
49             //$("div").stop(true,true);
50             //$("div").stop(true,false);
51             //$("div").stop(false,false);
52  $("div").stop(false,true); 53  }) 54  }) 55 </script>
56 </body>
57 </html>

 

相關文章
相關標籤/搜索