一、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的幾種用法和注意事項,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對的支持。