jQuery基礎-動畫篇

動畫效果是jQuery庫中很吸引人的地方,通過jQuery的動畫方法,可以很方便的為網頁添加視覺效果,給用戶一些更棒的體驗

1、基礎方法:hide()和show()

基礎語法:$('element').hide([duration ] [,easing ] [,complete ])

通過hide方法可以隱藏元素,當這里沒有出現參數的時候等同于設置display屬性: $('element').css("display","none")

這里的三個參數分別表示:
1、duration:動畫持續時間
2、easing:表示過渡動畫使用那種緩動函數,jQuery自身提供"linear" 和 "swing"
3、complete:在動畫完成時執行的函數

使用

$('.target').hide();                   //直接隱藏,不使用可選參數

 $('.target').hide(300, function() {      //300ms后元素被隱藏,并執行匿名函數
    alert('Animation complete');
 }

show()方法
基礎語法:$('element').show([duration ] [,easing ] [,complete ])
用于顯示元素,用法與hide類似,這里就不展開了

這里我們可以看出來show與hide是一對互斥的方法。需要對元素進行顯示隱藏的互斥切換,通常情況是需要先判斷元素的display狀態,然后調用其對應的處理方法。對于這樣的操作行為,jQuery提供了一個便捷方法toggle用于切換顯示或隱藏匹配元素

toggle( [duration ] [, easing ] [, complete ] )
這里補充的一個方法是toggle(),用來切換元素的隱藏、顯示,類似于toggleClass,用法和show、hide類似,舉個例子,當發現選取元素被隱藏,調用toggle()方法就由隱藏到出現;當發現選取元素是顯示的,調用toggle()方法就由隱藏到出現。
HTML

  <style>
    div {
        width: 500px;
        height: 50px;
        padding: 5px;
        margin: 5px;
        float: left;
        border: 1px solid #ccc;
    }
    
    .left {
        background: #bbffaa;
    }
    
    .right {
        background: yellow;
        display: none;
    }
    </style>

      
    <div class="left">顯示到隱藏</div>
    <div class="right">隱藏到顯示</div>
    <button>直接show-hide動畫</button>
    <button>直接hide-show動畫</button>

toggle()方法切換

 <script type="text/javascript">
    $("button:first").click(function() {
          $(".left").toggle(3000)     //顯示到隱藏的切換
    });


    $("button:last").click(function() {
        $(".right").toggle(3000)           //隱藏到顯示的切換
    });
    </script>

2、漸變效果

fadeIn、fadeOut
同show()方法不同的是,fadeIn()和fadeOut()方法只改變元素的不透明度,fadeOut()在指定的一段時間內降低元素的不透明度,知道元素完全消失(display:none),fadeIn()則反之。

語法:fadeOut([duration ] [, easing ] [, complete ]),fadeIn用法同理

fadeToggle
用法與上面的toggle類似,切換淡入和淡出方法

3、滑動效果

slideDown()
語法:slideDown( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面的下面部分滑下去,彌補了顯示的方式

slideUp()
語法:slideUp( [duration ] [, easing ] [, complete ] )
用滑動動畫隱藏一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面的下面部分滑上去,當一個隱藏動畫后,高度值達到0的時候,display 樣式屬性被設置為none,以確保該元素不再影響頁面布局。

slideToggle()
用滑動動畫顯示或隱藏一個匹配元素,用法與toggle、fadeToggle方法類似

4、自定義動畫animate

語法:.animate(properties,options)
參數分析:
properties:是一個或多個css屬性的鍵值對所構成的Object對象。要特別注意所有用于動畫的屬性必須是數字的,比如常見的border、margin、padding、width、height、left、top、font等等都是可以產生動畫效果的,下面給一個簡單的寫法

.animate({
  left: 50
  width: 50
  opactity: 'show'       //每一個屬性可以使用show/hide/toggle來控制元素的顯示或者隱藏
  fontSize: "10em"   
},500)

options: 參數options是一組包含動畫選項的值的集合。 常用的選項:
1、duration (default: 400):一個字符串或者數字決定動畫將運行多久。默認值: "normal", 三種預定速度的字符串("slow", "normal", 或 "fast"或表示動畫時長的毫秒數值(如:1000) )
2、easing (default: swing):一個字符串,表示過渡使用哪種緩動函數。jQuery自身提供"linear" 和 "swing",其他效果可以使用jQuery Easing Plugin插件
3、step:每個動畫元素的每個動畫屬性將調用的函數。這個函數為修改Tween 對象提供了一個機會來改變設置中得屬性值。
4、complete:在動畫完成時執行的函數

下面舉一個例子來演示
HTML

    <style>
        .div {
           width:80px;
           height:80px;
           background-color:red;
           position:relative
        }
    </style>

    <button id="btn1">變寬</button>
    <button id="btn2">復原</button>
    <button id="btn3">變寬變大移動</button>
    <button id="btn4">多個動畫</button>
    <button id="btn5">停止動畫</button>

    <div class="div"></div>

animate動畫的使用

        $div = $('.div')
        $("#btn1").on('click', function(e){
            $div.animate({width: '200px'});
        });
        $("#btn2").on('click', function(){
            $div.animate({
                width:'80px',
                height: '80px',
                left: '0px',
                top: '0px',
                opacity: 1
            }, 500);
        });
        $("#btn3").on('click', function(){
            $div.animate({
                width:'150px',
                height: '150px',
                left: '100px',
                top: '100px',
                opacity: 0
            }, 500);

   $('#btn4').on('click',function(){
        $div.animate({width:'150',height:'150px'})   //采用jQuery的鏈式調用寫法,簡化代碼
          .animate({left:'200px'})
          .animate({top:'200px'})
          .animate({left:'0px'})
          .animate({top:'0px'})
          .animate({width:'80px',height:'80px'})
      })

 $('#btn5').on('click',function(){     //點擊對應按鈕可停止動畫
        $div.stop(true)
      })

代碼運行效果
查看源碼

stop()方法--停止動畫
語法:

.stop( [clearQueue ], [ jumpToEnd ] )

當一個元素調用.stop(),當前正在運行的動畫(如果有的話)立即停止,如果同一元素調用多個動畫方法,尚未被執行的動畫被放置在元素的效果隊列中。這些動畫不會開始,直到第一個完成。
當調用.stop()的時候,隊列中的下一個動畫立即開始。如果clearQueue參數提供true值,那么在隊列中的動畫其余被刪除并永遠不會運行;如果提供jumpToEnd參數,并且值為true時,當前動畫將停止,但該元素上的 CSS 屬性會被立刻修改成動畫的目標值。

我知道上面的可能有點抽線難以理解,簡單使用就是:
1、stop():只會停止第一個動畫,第二個第三個繼續...
2、stop(true):停止第一個、第二個和第三個動畫...
3、stop(true ture):停止動畫,直接跳到第一個動畫的最終狀態

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容

  • 第1章 動畫基礎隱藏和顯示 1-1 jQuery中隱藏元素的hide方法 讓頁面上的元素不可見,一般可以通過設置c...
    mo默22閱讀 778評論 0 8
  • jQuery中隱藏元素的hide方法 讓頁面上的元素不可見,一般可以通過設置css的display為none屬性。...
    阿r阿r閱讀 1,163評論 0 4
  • 隱藏元素的hide方法 讓頁面上的元素不可見,一般可以通過設置css的display為none屬性。但是通過css...
    老夫撩發少年狂閱讀 1,104評論 0 2
  • (續jQuery基礎(2)) 四、動畫篇 第1章 動畫基礎隱藏和顯示 (1)隱藏元素的hide方法 讓頁面上的元素...
    凜0_0閱讀 462評論 0 6
  • 新公司離租住地三十多公里,只好平時住公司宿舍,周末開車回,周一清晨再回公司上班。 為了補貼點油費,我設置了滴滴順風...
    禮尚往來可好閱讀 616評論 0 1