jQuery 給咱們封裝了不少動畫效果,最爲常見的以下:javascript
顯示隱藏:show() / hide() / toggle() ;css
劃入畫出:slideDown() / slideUp() / slideToggle() ; java
淡入淡出:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ; ide
自定義動畫:animate() ;函數
注意:動畫
動畫或者效果一旦觸發就會執行,若是屢次觸發,就形成多個動畫或者效果排隊執行。this
jQuery爲咱們提供另外一個方法,能夠中止動畫排隊:stop() ;spa
顯示隱藏動畫,常見有三個方法:show() / hide() / toggle() ;code
語法規範以下:orm
show([speed,[easing],[fn]])
(1)參數均可以省略, 無動畫直接顯示。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
hide([speed,[easing],[fn]])
(1)參數均可以省略, 無動畫直接顯示。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
toggle([speed,[easing],[fn]])
(1)參數均可以省略, 無動畫直接顯示。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
建議:平時通常不帶參數,直接顯示隱藏便可。
<body> <button>顯示</button> <button>隱藏</button> <button>切換</button> <div></div> <script> $(function() { $("button").eq(0).click(function() { $("div").show(1000, function() { alert(1); }); }) $("button").eq(1).click(function() { $("div").hide(1000, function() { alert(1); }); }) $("button").eq(2).click(function() { $("div").toggle(1000); }) // 通常狀況下,咱們都不加參數直接顯示隱藏就能夠了 }); </script> </body>
滑入滑出動畫,常見有三個方法:slideDown() / slideUp() / slideToggle() ;
語法規範以下:
slideDown([speed,[easing],[fn]])
(1)參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
slideUp([speed,[easing],[fn]])
(1)參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
slideToggle([speed,[easing],[fn]])
(1)參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
<body> <button>下拉滑動</button> <button>上拉滑動</button> <button>切換滑動</button> <div></div> <script> $(function() { $("button").eq(0).click(function() { // 下滑動 slideDown() $("div").slideDown(); }) $("button").eq(1).click(function() { // 上滑動 slideUp() $("div").slideUp(500); }) $("button").eq(2).click(function() { // 滑動切換 slideToggle() $("div").slideToggle(500); }); }); </script> </body>
淡入淡出動畫,常見有四個方法:fadeIn() / fadeOut() / fadeToggle() / fadeTo() ;
語法規範以下:
fadeIn([speed,[easing],[fn]])
(1)參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
fadeOut([speed,[easing],[fn]])
(1)參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
fadeToggle([speed,[easing],[fn]])
(1)參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
fadeTo([[speed],opacity,[easing],[fn]])
(1)opacity 透明度必須寫,取值 0~1 之間。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。必須寫
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
<body> <button>下拉滑動</button> <button>上拉滑動</button> <button>切換滑動</button> <div></div> <script> $(function() { $("button").eq(0).click(function() { // 下滑動 slideDown() $("div").slideDown(); }) $("button").eq(1).click(function() { // 上滑動 slideUp() $("div").slideUp(500); }) $("button").eq(2).click(function() { // 滑動切換 slideToggle() $("div").slideToggle(500); }); }); </script> </body>
自定義動畫很是強大,經過參數的傳遞能夠模擬以上全部動畫,方法爲:animate() ;
語法規範以下:
1. 語法
animate(params,[speed],[easing],[fn])
2. 參數
(1)params: 想要更改的樣式屬性,以對象形式傳遞,必須寫。 屬性名能夠不用帶引號, 若是是複合屬性則須要採 取駝峯命名法 borderLeft。其他參數均可以省略。
(2)speed:三種預約速度之一的字符串(「slow」,「normal」, or 「fast」)或表示動畫時長的毫秒數值(如:1000)。
(3)easing:(Optional) 用來指定切換效果,默認是「swing」,可用參數「linear」。
(4)fn: 回調函數,在動畫完成時執行的函數,每一個元素執行一次。
<body> <button>動起來</button> <div></div> <script> $(function() { $("button").click(function() { $("div").animate({ left: 500, top: 300, opacity: .4, width: 500 }, 500); }) }) </script> </body>
動畫或者效果一旦觸發就會執行,若是屢次觸發,就形成多個動畫或者效果排隊執行。
中止動畫排隊的方法爲:stop() ;
stop() 方法用於中止動畫或效果。
stop() 寫到動畫或者效果的前面, 至關於中止結束上一次的動畫。
總結: 每次使用動畫以前,先調用 stop() ,在調用動畫
$(".nav>li").hover(function() { // stop 方法必須寫到動畫的前面 $(this).children("ul").stop().slideToggle(); });
jQuery中爲咱們添加了一個新事件 hover() ; 功能相似 css 中的僞類 :hover 。介紹以下
語法
hover([over,]out) // 其中over和out爲兩個函數
over:鼠標移到元素上要觸發的函數(至關於mouseenter)
out:鼠標移出元素要觸發的函數(至關於mouseleave)
若是隻寫一個函數,則鼠標通過和離開都會觸發它
<body> <ul class="nav"> <li> <a href="#">微博</a> <ul><li><a href="">私信</a></li><li><a href="">評論</a></li><li><a href="">@我</a></li></ul> </li> <li> <a href="#">微博</a> <ul><li><a href="">私信</a></li><li><a href="">評論</a></li><li><a href="">@我</a></li></ul> </li> </ul> <script> $(function() { // 鼠標通過 // $(".nav>li").mouseover(function() { // // $(this) jQuery 當前元素 this不要加引號 // // show() 顯示元素 hide() 隱藏元素 // $(this).children("ul").slideDown(200); // }); // // 鼠標離開 // $(".nav>li").mouseout(function() { // $(this).children("ul").slideUp(200); // }); // 1. 事件切換 hover 就是鼠標通過和離開的複合寫法 // $(".nav>li").hover(function() { // $(this).children("ul").slideDown(200); // }, function() { // $(this).children("ul").slideUp(200); // }); // 2. 事件切換 hover 若是隻寫一個函數,那麼鼠標通過和鼠標離開都會觸發這個函數 $(".nav>li").hover(function() { // stop 方法必須寫到動畫的前面 $(this).children("ul").stop().slideToggle(); }); }) </script> </body>
思路分析: 1.鼠標通過某個小li 有兩步操做:2.當前小li 寬度變爲 224px, 同時裏面的小圖片淡出,大圖片淡入3.其他兄弟小li寬度變爲69px, 小圖片淡入, 大圖片淡出
<script type="text/javascript"> $(function () { // 鼠標通過某個小li 有兩步操做: $(".king li").mouseenter(function () { // 1.當前小li 寬度變爲 224px, 同時裏面的小圖片淡出,大圖片淡入 $(this) .stop() .animate({ width: 224, }) .find(".small") .stop() .fadeOut() .siblings(".big") .stop() .fadeIn(); // 2.其他兄弟小li寬度變爲69px, 小圖片淡入, 大圖片淡出 $(this) .siblings() .stop() .animate({ width: 69, }) .find(".small") .stop() .fadeIn() .siblings(".big") .stop() .fadeOut(); }); }); </script>