jquery中常用的動畫的方法就是hide()與show().
$(element).hide()這段程式碼可以與此相等element.css("display","none")
在hide(time)與show(time)中填入事件,可以慢慢消失跟隨。可以修改元素的多個樣式,高度,寬度,不透明度。
另一組方法fadeIn()與fadeOut()這個與hide跟show不同的是,使用hide或show的時候會改變網頁的高度,而fadeIn與fadeOut則不會。
$("#panel h5.head").toggle(function(){ $(this).addClass("highlight fadeOut(1000); },function(){ (this).removeClass("highlight"); $(this).next("div .content").fadeIn(改變高度。
動畫方法概括
動畫隊列
(1)一組元素上的動畫效果。
a)當在一個animate()方法中應用多個屬性時,動畫是同時發生的。
b)當以鍊式的寫法應用動畫方法時,動畫是依照順序發生的。
(2)多組元素上的動畫效果
a)預設情況下,動畫都是同時發生的。
b)當以回呼的形式應用動畫方式時,動畫是按照回呼順序發生的。
另外,在動畫方法中,要注意其他非動畫的方法會插隊,例如css()方法,要使這些非動畫的方法也按照順序來執行,需要把這些方法寫在動畫方法的回呼函數中。
舉一個animate的例子:
$(“#id”).animat({left:”400px”,top:”300px”},3000,function(){ $(this).css(“border”,”1px solid blue”); });
若想要動畫停止,需要在animate()方法前插入stop()方法
例如:$(“#id”).stop().animate()注意stop中的兩個參數。
判斷元素是否在動畫狀態的方法時:
$(element).is(“:animated”);
jQuery 可以很方便的為頁面中的元素添加一些動態效果,可以用其內建效果,也可以自己定義效果。
以下是一些內建的效果方法:
一個簡單的例子:
$('h1').show();
設定動畫效果的長度
對於 $.fn.show 和 $.fn.hide 而言,預設其時長是 0,其它效果的預設時長一般是 400 毫秒,當然也自己設定時長:
$('h1').fadeIn(300); // 300 毫秒 $('h1').fadeOut('slow'); // slow 是内建的速度常量
jQuery 預設的速度常數都位於 jQuery.fx.speeds 物件中:
speeds: { slow: 600, fast: 200, // Default speed _default: 400 }
我們也可以擴充這個對象,加入自己常用的速度值:
jQuery.fx.speeds.blazing = 100; jQuery.fx.speeds.turtle = 2000;
回呼函數
如果想在動畫效果結束後再執行一些程式碼,那麼可以給這些動畫方法換入一個回呼函數:
$('div.old').fadeOut(300, function() { $(this).remove(); });
如果選擇器中沒有符合到任何元素,那麼回呼函數也不會被執行,所以在執行回呼函數前做個判斷是有必要的:
var $thing = $('#nonexistent'); var cb = function() { console.log('done!'); }; if ($thing.length) { $thing.fadeIn(300, cb); } else { cb(); }
自訂動畫方法
jQuery 中的$.fn.animate 方法可以用來擴展我們的自訂動畫,主要是透過animate 方法設定元素CSS 屬性來實現的,設定元素CSS 屬性的時候可以使用絕對值,也可以使用相對值:
$('div.funtimes').animate( { left : "+=50", opacity : 0.25 }, 300, // 时长 function() { console.log('done!'); // 回调函数 });
但是,用 $.fn.animate 建立自訂動畫效果時,就無法改變元素的顏色。如果要建立顏色動畫,需要依賴其它一些顏色插件。
動畫的風格
jQuery 內建的動畫風格有兩種:swing 和 linear
$('div.funtimes').animate( { left : [ "+=50", "swing" ], opacity : [ 0.25, "linear" ] }, 300 );
控制動畫
jQuery 提供了幾個方法用來控制動畫的執行:
$.fn.stop 停止目前正在執行的動畫
$.fn.delay 讓動畫暫停一段時間:
$('h1').show(300).delay(1000).hide(300);
jQuery.fx.off :關閉動畫的過度效果,相當於把時長設為 0。