有些複雜的動畫經過以前學到的幾個動畫函數是不可以實現,這時候就須要強大的animate方法了css
操做一個元素執行3秒的淡入動畫,對比一下2組動畫設置的區別算法
$(elem).fadeOut(3000) $(elem).animate({ opacity:0 },3000)
顯而易見,animate方法更加靈活了,能夠精確的控制樣式屬性從而執行動畫ide
語法:函數
.animate( properties ,[ duration ], [ easing ], [ complete ] ) .animate( properties, options )
.animate()方法容許咱們在任意的數值的CSS屬性上建立動畫。2種語法使用,幾乎差很少了,惟一必要的屬性就是一組CSS屬性鍵值對。這組屬性和用於設置.css()方法的屬性鍵值對相似,除了屬性範圍作了更多限制。第二個參數開始能夠單獨傳遞多個實參也能夠合併成一個對象傳遞了性能
參數分解:動畫
properties:一個或多個css屬性的鍵值對所構成的Object對象。要特別注意全部用於動畫的屬性必須是數字的,除非另有說明;這些屬性若是不是數字的將不能使用基本的jQuery功能。好比常見的,border、margin、padding、width、height、font、left、top、right、bottom、wordSpacing等等這些都是能產生動畫效果的。background-color很明顯不能夠,由於參數是red或者GBG這樣的值,很是用插件,不然正常狀況下是不能只用動畫效果的。注意,CSS 樣式使用 DOM 名稱(好比 "fontSize")來設置,而非 CSS 名稱(好比 "font-size")。this
特別注意單位,屬性值的單位像素(px),除非另有說明。單位em 和 %須要指定使用spa
.animate({ left: 50, width: '50px' opacity: 'show', fontSize: "10em", }, 500);
除了定義數值,每一個屬性能使用'show', 'hide', 和 'toggle'。這些快捷方式容許定製隱藏和顯示動畫用來控制元素的顯示或隱藏插件
.animate({ width: "toggle" });
若是提供一個以+= 或 -=開始的值,那麼目標值就是以這個屬性的當前值加上或者減去給定的數字來計算的code
.animate({ left: '+=50px' }, "slow");
duration時間
動畫執行的時間,持續時間是以毫秒爲單位的;值越大表示動畫執行的越慢,不是越快。還能夠提供'fast' 和 'slow'字符串,分別表示持續時間爲200 和 600毫秒。
easing動畫運動的算法
jQuery庫中默認調用 swing。若是須要其餘的動畫算法,請查找相關的插件
complete回調
動畫完成時執行的函數,這個能夠保證當前動畫肯定完成後發會觸發
animate在執行動畫中,若是須要觀察動畫的一些執行狀況,或者在動畫進行中的某一時刻進行一些其餘處理,咱們能夠經過animate提供的第二種設置語法,傳遞一個對象參數,能夠拿到動畫執行狀態一些通知
.animate( properties, options )
options參數
其中最關鍵的一點就是:
若是多個元素執行動畫,回調將在每一個匹配的元素上執行一次,不是做爲整個動畫執行一次
列出經常使用的方式:
$('#elem').animate({ width: 'toggle', height: 'toggle' }, { duration: 5000, specialEasing: { width: 'linear', height: 'easeOutBounce' }, complete: function() { $(this).after('<div>Animation complete.</div>'); } });
動畫在執行過程當中是容許被暫停的,當一個元素調用.stop()方法,當前正在運行的動畫(若是有的話)當即中止
語法:
.stop( [clearQueue ], [ jumpToEnd ] ) .stop( [queue ], [ clearQueue ] ,[ jumpToEnd ] )
stop還有幾個可選的參數,簡單來講能夠這3種狀況
簡單的說:參考下面代碼、
$("#aaron").animate({ height: 300 }, 5000) $("#aaron").animate({ width: 300 }, 5000) $("#aaron").animate({ opacity: 0.6 }, 2000)