DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> jQuery入門知識 >> JQuery入門技巧 >> jQuery中animate的幾種用法與注意事項
jQuery中animate的幾種用法與注意事項
編輯:JQuery入門技巧     

一、animate語法結構

animate(params,speed,callback)

params:一個包含樣式屬性及值的映射,比如{key1:value1,key2:value2}

speed:速度參數[可選]

callback:在動畫完成時執行的函數[可選]

二、自定義簡單動畫

用一個簡單例子來說明,實現單擊某div在頁面上橫向飄動的效果。

<style>
 #cube{
  position:relative;/* 不加這句元素不能動 */
  width:30px;
  height:30px;
  background:red;
  cursor:pointer;
 }
</style>
<body>
 <div>
  <div id="cube"></div>
 </div>
 <script>
  $(function(){
   $("#cube").click(function(){
    $(this).animate({left:"100px"},2000)
   })
  })
 </script>

為了使元素動起來,要改變left屬性。為了能影響元素top、right、bottom、left屬性值必須聲明元素的position。


演示效果

三、累加、累減動畫

在之前的代碼中,設置了{left:"100px"}這個屬性作為參數,如果改寫為{left:"+=25px"} ,效果如下


演示效果

四、多重動畫

同時執行多個動畫

上面的例子是一個很簡單的動畫。如果想同時執行多個動畫,比如在元素向右滑動的同時,放大元素高度。

代碼如下:

$(this).animate({left:"+=25px",height:"+=20px"},1000)

演示效果

五、按順序執行多個動畫

上例中,向右滑動與高度變大是同時發生的,如果想讓方塊先向右滑動再變高,只需將代碼拆分

如下:

$(this).animate({left:"+=25px"},500)
  .animate({height:"+=20px"},500)

像這樣的動畫效果的執行有先後順序,稱為“動畫隊列”


演示效果

六、綜合示例

單擊方塊,讓他向右移動的同時增高,不透明度從50%增加到100%,之後上下移動,加寬,完成後淡出。

$("#cube").click(function(){
    $(this).animate({left:"100px",height:"100px",opacity:"1"},500)
    .animate({top:"40px",width:"100px"},500)
    .fadeOut('slow')
   })

為同一元素應用多重效果時可以通過鏈式方式對這些效果進行排隊。


演示效果

七、動畫回調函數

在上例中,如果想在最後一步切換css樣式(background:blue),而不是淡出,如果按照通常處理,相關代碼如下:

$("#cube").click(function(){
    $(this).animate({left:"100px",height:"100px",opacity:"1"},500)
    .animate({top:"40px",width:"100px"},500)
    .css("border","5px solid blue")//改動這行
   })

然而,css()方法被提前調用。


演示效果

引起這個問題的原因是,css()方法不會加入到動畫隊列中,而是立即執行。可以使用回調函數對非動畫方法實現排隊。

正確的相關代碼如下:

   $("#cube").click(function(){
    $(this).animate({left:"100px",height:"100px",opacity:"1"},500)
    .animate({top:"40px",width:"100px"},500,function(){
     $(this).css("border","5px solid blue")
    })
   })

演示效果

值得注意的是,callback適用於jquery所有的動畫方法,比如slidDown() ,show()等。

總結

以上就是關於jquery中animate的幾種用法和注意事項,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對的支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved