成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 詳解jQuery停止動畫——stop()方法的使用
全站頭部文字 我要出現在這里
詳解jQuery停止動畫——stop()方法的使用 740 2024-02-09   

很多時候需要停止匹配元素正在進行的動畫,比如,當鼠標選入元素時顯示菜單,鼠標離開時隱藏下拉菜單,如果鼠標移入移出過快的話就會導致動畫效果與鼠標的動作不一致的情況,此時stop()就派上用場了。

stop()方法的語法結構為:

stop([clearQueue],[gotoEnd]);

參數clearQueue和gotoEnd都是可選參數,為Boolean值(true或false)。clearQueue代表是否清空未執行完的動畫隊列,gotoEnd代表是否直接將正在執行的動畫跳轉到末狀態。

(1)直接使用使用stop()方法,則會立即停止當前正在進行的動畫,如果接下來還有動畫等待繼續進行,則以當前狀態開始接下來的動畫。比如下面例子:

 < html部分 -->
 <div id="panel" style="width: 60px;height: 22px;background-color: #eee;">呵呵</div> 
 /* js部分 */
 $("#panel").hover(function() {
  $(this).stop().animate({height: "150"}, 200);
 },function() {
  $(this).stop().animate({height: "22"}, 300);
 });

此時,在光標移入時,觸發光標移入動畫(在0.2秒內height變為150),在動畫還沒執行完的時候光標移出,則停止當前動畫(可能height還未到達150),執行光標移出觸發的動畫(在0.3秒內height變回22)。反之亦然。

如果遇到組合動畫,例如:

$("#panel").hover(function() {
  $(this).stop()
   .animate({height: "150"}, 200) //如果在此時觸發了光標的移出事件
           //將執行下面的動畫
   .animate({width: "300"},300); //而非光標移出事件中的動畫
 },function() {
  $(this).stop()
   .animate({height: "22"}, 200)
   .animate({width: "60"},300);
 });

此時只用一個不帶參數的stop()方法就顯得力不從心了。因為stop()方法只會停止正在進行的動畫,如果動畫正執行在第1階段(改變height的階段),則觸發光標移出事件后,只會停止當前的動畫,并繼續進行下面的.animate({width: "300"},300)動畫,而光標移出事件中的動畫要等這個動畫結束后才會繼續執行,這顯然不是預期的結果。這種情況下stop()方法的第一個參數就發揮作用了。

(2)stop(true),此時程序會把當前元素接下來尚未執行完的動畫隊列清空。所以可以把上面代碼改成如此代碼,就能實現預期的效果。

$("#panel").hover(function() {
  $(this).stop(true)
   .animate({height: "150"}, 200) //如果在此時觸發了光標的移出事件
           //直接跳過后面的動畫隊列
   .animate({width: "300"},300); 
 },function() {
  $(this).stop()
   .animate({height: "22"}, 200)
   .animate({width: "60"},300);
 });

(3)第2個參數(gotoEnd)可以用于讓正在執行的動畫直接到達結束時刻的狀態,通常用于后一個動畫需要基于前一個動畫的末狀態的情況,可以通過stop(false,true)這種方式來讓當前動畫直接到達末狀態

(4)兩者結合起來stop(true,true),停止當前動畫并直接到達當前動畫的末狀態,并清空動畫隊列

(5)注意,jQuery只能設置正在執行的動畫的最終狀態,而沒有提供直接到達執行動畫隊列最終狀態的方法。例如有一組動畫:

  $("div.content")
  .animate({width: "300"}, 200)
  .animate({height: "150"}, 300)
  .animate({opacity: "0.2"}, 200);

無論怎么設置stop()方法,均無法再改變"width"或者"height"時,將此<div>元素的末狀態變成300*150大小,并且設置透明度為0.2。

溫馨提示:

jQuery中的動畫有show()、hide()、fadeIn()、fadeOut()、slideDown()、slideUp()、animate()等等。stop()方法對上述的動畫都適用。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持綠夏網!



主站蜘蛛池模板: 红灯区| 鼻子上长痘痘是什么原因引起的| 谭天谦| 龙的心电影完整版国语| 伴娘| bangdream动漫| 天堂回信 电影| 大内密探零零发演员表| 叶蓓个人资料简介| 熊出没之雪岭熊风 2015 张伟 | 电影名《走进房间》在线观看| 少年包青天4第四部| 以下关于宏病毒说法正确的是| 男同视频在线| 电影疯狂| 尚大庆| 大学英语综合教程1答案| 视频 | vk| 法医秦明1至6部顺序| 左航个人资料| 性文章| 卜算子咏梅拼音| 麻美由真电影| 大奉打更人电视剧在线| 蒙古小男孩唱哭全场| 春心荡漾第一季电视剧免费完整播放| 都市女孩| 沟通能力自我评价| 农村gaygayxxx| 特殊的精油按摩1| 来生缘吉他谱c调| 有关动物的成语| 放学我当家| 欢乐的牧童钢琴谱| 东莞久久精工机械有限公司| 画江湖之不良人7季什么时候上映| 你知道我在等你吗吉他谱| 林美娇最惊艳的十部电影| 董璇惊艳写真| 魔法城堡歌词| 现代古诗冰心|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103