jQuery中的動畫

jQuery中的動畫

show()方法和hide()方法

控制元素的顯示與隱藏,可以為該方法添加參數(shù)盏触,使得元素可以動起來阳惹。

  • 可以為該方法傳遞一個速度關(guān)鍵字slow、normal琼了、fast(600毫秒、400毫秒夫晌、200毫秒)
  • 可以為該方法的顯示速度指定一個數(shù)字雕薪,單位是毫秒(1000毫秒)

fadeIn()方法和fadeOut()方法

與show()方法不同的是,fadeIn()與fadeOut()方法只改變元素的不透明度晓淀。

slideDown()方法和slideUp()方法

slideDown()方法和slideUp()方法只會改變元素的高度

自定義動畫方法animate()

animate(params,speed,callback);

  1. params:一個包含巖石屬性及值的映射所袁,比如{property1:'value1',prperty2:'value2',...}
  2. speed:速度參數(shù),可選
  3. callback:在動畫完成時的執(zhí)行函數(shù)凶掰,可選
    綜合動畫示例
$('div').mouseover(function () {
    $(this).animate({
        left: '+=300px',
        top: '+=300px',
        width: '200px',
        height: '200px',
        opacity: '0.3'
    },2000).animate({
        left: '+=300px',
        top: '-=300px',
        width: '100px',
        height: '100px',
        opacity: '1'
    },2000).fadeOut('3000');
});

自定義動畫方法animate()

在上例中燥爷,若想在動畫完成之后為div元素添加一個邊框css('border','1px solid #0f0')。這樣并不能得到預(yù)期的效果懦窘,而實際效果就是前翎,剛開始執(zhí)行動畫的時候,css()的方法就執(zhí)行了畅涂。其根本原因在于css()并不會加入到動畫隊列中港华,而是會立即執(zhí)行。
如果想要達到預(yù)期的效果午衰,我們需要把使用回調(diào)函數(shù)callback來對非動畫方法實現(xiàn)排隊

停止動畫和判斷是否處于動畫狀態(tài)

1.停止元素的動畫

很多時候我們需要停止匹配元素正在進行的動畫立宜,此時我們需要使用stop()方法
stop([clearQueue],[gotoEnd]);
參數(shù)clearQueue與gotoEnd都是可選的,都為Boolean值臊岸。clearQueue表示立即清空為執(zhí)行完的動畫橙数,gotoEnd代表是否直接將正在執(zhí)行的動畫跳轉(zhuǎn)到末狀態(tài)。

直接使用stop()方法帅戒,則會立即停止當前正在執(zhí)行的動畫商模,如果接下來還有動畫等待執(zhí)行,則以當前狀態(tài)開始接下來的動畫。

當為一個使元素綁定hover事件之后施流,用戶把光標移入元素時會觸發(fā)動畫效果响疚,而當這個動畫還沒結(jié)束時,用戶就將光標移出了瞪醋。那么改變移出時執(zhí)行的動畫就會被放入隊列中忿晕,等待光標移入的動畫結(jié)束后再執(zhí)行。因此如果光標 的移入移出過快的話银受,就會導致動畫效果與光標的動作不一致践盼。此時只需要在光標的移入移出的動畫之前加入stop()方法,就可解決宾巍。

$('div').hover(function () {
    $(this).stop().animate({
        width: '200px',
    });
},function () {
   $(this).stop().animate({
        height: '50px'
    });
});

可是如果遇到組合動畫

$('div').hover(function () {
    $(this).stop().animate({
        width: '200px',
    }).animate({
        left: '+=300px',
    });
},function () {
   $(this).stop().animate({
        height: '50px'
    });
});

這時的stop()只會停止正在進行的動畫咕幻。如果動畫正在執(zhí)行第一階段(改變width)鼠標觸發(fā)移出事件之后,只會停止當前的動畫顶霞,并繼續(xù)執(zhí)行改變left的動畫肄程,而光標移出事件要等這個動畫完成后才能執(zhí)行。在這種情況下选浑,我們可以設(shè)置stop()方法的第一個參數(shù)為true蓝厌,此時程序會把當前元素接下來的尚未執(zhí)行動畫全部清空。第二個參數(shù)gotoEnd用于直接讓當前動畫到達結(jié)束時刻古徒,通常用于后一個動畫需要基于前一個動畫的末狀態(tài)的情況拓提。

2. 判斷元素釋放處于動畫狀態(tài)

在使用animate()動畫的時候,要避免動畫積累導致動畫與用戶的行為不一致隧膘。解決辦法就是判斷元素是否處于動畫狀態(tài)代态,如果元素不處于動畫狀態(tài),才為元素添加新的動畫疹吃。
及其重要胆数,特別常用

if (!$(element).is(':animated')){   //判斷元素釋放處于動畫狀態(tài)
    //如果沒有處于動畫狀態(tài),則添加新動畫
}

3. 延遲動畫

在動畫執(zhí)行過程中互墓,如果想對動畫進行延遲操作,可以使用delay()方法

 $(this).animate({left: '400px'},3000)
        .delay(1000)
        .animate({top: '100px'},2000)
        .delay(2000)
        .animate({height: '100px'},800);

4. 其他動畫方法

  • toggle(speed,[callback]) 切換樣式的可見狀態(tài)
  • sildeToggle(speed,[easing],[callback]) 通過高度的變化來切換元素的可見性
  • fadeTo(speed,opacity,[callback]) 將元素的不透明度以漸進的方法調(diào)整到指定值
  • fadeToggle(speed,[easing],[callback]) 通過不透明的變化來切換元素的可見性

動畫隊列

  • 當在一個animate()方法中應(yīng)用多個屬性時蒋搜,動畫是同時發(fā)生的
  • 當以鏈式寫法應(yīng)用動畫方法時篡撵,動畫是按順序發(fā)生的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市豆挽,隨后出現(xiàn)的幾起案子育谬,更是在濱河造成了極大的恐慌,老刑警劉巖帮哈,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膛檀,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機咖刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門泳炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嚎杨,你說我怎么就攤上這事花鹅。” “怎么了枫浙?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵刨肃,是天一觀的道長。 經(jīng)常有香客問我箩帚,道長真友,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任紧帕,我火速辦了婚禮盔然,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焕参。我一直安慰自己轻纪,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布叠纷。 她就那樣靜靜地躺著刻帚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涩嚣。 梳的紋絲不亂的頭發(fā)上崇众,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音航厚,去河邊找鬼顷歌。 笑死,一個胖子當著我的面吹牛幔睬,可吹牛的內(nèi)容都是我干的眯漩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼麻顶,長吁一口氣:“原來是場噩夢啊……” “哼赦抖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辅肾,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤队萤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后矫钓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體要尔,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡舍杜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了赵辕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片既绩。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖匆帚,靈堂內(nèi)的尸體忽然破棺而出熬词,到底是詐尸還是另有隱情,我是刑警寧澤吸重,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布互拾,位于F島的核電站,受9級特大地震影響嚎幸,放射性物質(zhì)發(fā)生泄漏颜矿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一嫉晶、第九天 我趴在偏房一處隱蔽的房頂上張望骑疆。 院中可真熱鬧,春花似錦替废、人聲如沸箍铭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诈火。三九已至,卻和暖如春状答,著一層夾襖步出監(jiān)牢的瞬間冷守,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工惊科, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拍摇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓馆截,卻偏偏與公主長得像充活,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜡娶,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容