jquery animate用法

最近看過(guò)一段實(shí)現(xiàn)天貓購(gòu)物車(chē)動(dòng)畫(huà)效果的代碼窄绒,如果說(shuō)是一道數(shù)學(xué)題汞贸,也就是高一數(shù)學(xué)的水準(zhǔn),但是把它放進(jìn)程序里面寫(xiě)出來(lái)可就費(fèi)勁了暗膜。當(dāng)然今天不去研究那個(gè)復(fù)雜的東西匀奏,我們就回顧一下并徹底弄清jquery animate動(dòng)畫(huà)的原理。

1 基本用法

$('...').animate(prop,speed,easing,callback)
  • prop 類(lèi)似css3屬性參數(shù)学搜,是一個(gè)js對(duì)象娃善。
  • speed 動(dòng)畫(huà)時(shí)間
  • easing 緩動(dòng)函數(shù),默認(rèn)是swing
  • callback 動(dòng)畫(huà)結(jié)束的回調(diào)函數(shù)

廢話不多說(shuō)瑞佩,直接上代碼

<div id="clickme">
    Click here
</div>
<img id="book" src="js/qwe.png" alt="" width="100" height="123"
     style="position: relative; left: 10px;">

( "#clickme" ).click(function() {
  $( "#book" ).animate({
    opacity: 0.25,
    left: "+=50",
    height: "toggle"
  }, 5000, function() {
    // Animation complete.
  });
});

我們可以看到prop就是一個(gè)css屬性的對(duì)象聚磺,不寫(xiě)easing默認(rèn)是swing效果,當(dāng)然你可以在5000后面寫(xiě)個(gè)linear炬丸,表示勻速效果瘫寝。

注意height:'toggle'就是高度變?yōu)?,然后又會(huì)變回來(lái)。

我們可以將上面代碼稍稍改一下:

var flag = true;
    $( "#clickme" ).click(function() {
        if(!$('#book').is(':animated')){
            $( "#book" ).animate({
                opacity: flag ? 0.25 : 1,
                left: "+=50",
                height: "toggle"
            }, 1000,function() {
                flag = !flag
            });
        }
  });

is(':animated')判斷是否處于運(yùn)動(dòng)焕阿,如果是就不會(huì)執(zhí)行此次動(dòng)畫(huà)咪啡。

2 step function

這個(gè)用的比較少,知道就可以了

$('#book').animate({
            opacity: .7,
            height: '200px'
        },
        {
            step: function(now, fx) {
                var data = fx.elem.id + ' ' + fx.prop + ': ' + now;
                $('body').append('<div>' + data + '</div>');
            }
        });

book opacity: 0.9999259840548598
book height: 75.03083997714178
book opacity: 0.9997733646175807
book height: 75.09443140934138
.............................
book opacity: 0.7
book height: 200

.animate()提供了一個(gè)step選項(xiàng)- 每步動(dòng)畫(huà)執(zhí)行后調(diào)用的回調(diào)函數(shù)暮屡。

3 easing使用

這個(gè)是比較有用的瑟匆,在開(kāi)發(fā)中會(huì)碰到。

$('#clickme').click(function() {
        $('#book').animate({
            width: ['toggle', 'swing'],
            height: ['toggle', 'linear'],
            opacity: 'toggle'
        }, 5000, function() {
            $(this).after('<div>Animation complete.</div>');
        });
    });

如上代碼栽惶,我們可以看到,可以設(shè)置不同屬性漸變的參數(shù)疾嗅,width的效果是swing外厂,height的是linear,而opacity是后面寫(xiě)的linear代承。
jquery默認(rèn)只支持swing和linear汁蝶,我們?nèi)绾问褂闷渌弰?dòng)呢?

<script type="text/javascript" src="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js"></script>
在jq之后引入這個(gè)js

$('#clickme').click(function() {
        $('#book').animate({
            width: 'toggle',
            height: 'toggle'
        }, {
            duration: 5000,
            specialEasing: {
                width: 'easeInBounce',
                height: 'easeOutBounce'
            },
            complete: function() {
                $(this).after('<div>Animation complete.</div>');
            }
        });
    });

注意這種寫(xiě)法论悴,duration掖棉,easing和callback都寫(xiě)在了個(gè)對(duì)象里。
我們可以發(fā)現(xiàn)膀估,所有的動(dòng)畫(huà)屬性都是在同時(shí)進(jìn)行幔亥,并且都是花費(fèi)相同的時(shí)間,如果我想分開(kāi)執(zhí)行呢察纯?

4 animate使用差異

 <button id="go1">? Animate Block1</button>
<button id="go2">? Animate Block2</button>
<div id="block1">Block1</div>
<div id="block2">Block2</div>

$( "#go1" ).click(function(){
  $( "#block1" ).animate( { width: "90%" }, { queue: false, duration: 3000 })
     .animate({ fontSize: "24px" }, 1500 )
     .animate({ borderRightWidth: "15px" }, 1500 );
});
 
$( "#go2" ).click(function(){
  $( "#block2" ).animate({ width: "90%" }, 1000 )
     .animate({ fontSize: "24px" }, 1000 )
     .animate({ borderLeftWidth: "15px" }, 1000 );
});
//  這種情況是上一個(gè)執(zhí)行完了才下一個(gè)

如果對(duì)上面2種寫(xiě)法都清楚的話帕棉,就沒(méi)問(wèn)題了。解釋一下吧:

  • queue等于false饼记,表示該元素下一個(gè)animate和上一個(gè)是一起執(zhí)行的香伴,就是說(shuō)寬度變?yōu)?0%和字體變?yōu)?4px是一起執(zhí)行的,所花時(shí)間不同而已具则。

下面給個(gè)例子結(jié)束了

<div class="rectangle">
   <div class="square-small"></div>
</div>
<button id="animation-button">Run!</button>
<span id="percentage">0</span>%

$('#animation-button').click(function() {
   var $button = $(this);

   $('.rectangle')
      .find('.square-small')
      .animate({
            left: 280
         },
         {
            duration: 2000,
            start: function() {
               $button.prop('disabled', true);
            },
            complete: function() {
               $button.prop('disabled', false);
            },
            progress: function(animation, progress) {
               $('#percentage').text(Math.round(progress * 100));
            }
         }
      );
});

大家可以自己去試一下喲即纲。。博肋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末低斋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子束昵,更是在濱河造成了極大的恐慌拔稳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锹雏,死亡現(xiàn)場(chǎng)離奇詭異巴比,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)轻绞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)采记,“玉大人,你說(shuō)我怎么就攤上這事政勃∵罅洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵奸远,是天一觀的道長(zhǎng)既棺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)懒叛,這世上最難降的妖魔是什么丸冕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮薛窥,結(jié)果婚禮上胖烛,老公的妹妹穿的比我還像新娘。我一直安慰自己诅迷,他們只是感情好佩番,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著罢杉,像睡著了一般趟畏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屑那,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天拱镐,我揣著相機(jī)與錄音,去河邊找鬼持际。 笑死沃琅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜘欲。 我是一名探鬼主播益眉,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼姥份!你這毒婦竟也來(lái)了郭脂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤澈歉,失蹤者是張志新(化名)和其女友劉穎展鸡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體埃难,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莹弊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年涤久,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忍弛。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡响迂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出细疚,到底是詐尸還是另有隱情蔗彤,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布疯兼,位于F島的核電站然遏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吧彪。R本人自食惡果不足惜啦鸣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望来氧。 院中可真熱鬧,春花似錦香拉、人聲如沸啦扬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扑毡。三九已至,卻和暖如春盛险,著一層夾襖步出監(jiān)牢的瞬間瞄摊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工苦掘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留换帜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓鹤啡,卻偏偏與公主長(zhǎng)得像惯驼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子递瑰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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