jQuery動(dòng)畫

展現(xiàn)和隱藏

  • .hide([duration ] [,easing ] [,complete ])
    用于隱藏元素,沒有參數(shù)的時(shí)候等同于直接設(shè)置display屬性厚者。
 $('.target').hide();
//等同于 $('.target').css('display', 'none')
//原生JS寫法node.style.display = 'none'
  • .show( [duration ] [, easing ] [, complete ] )
    用于顯示元素罪帖,用法和hide類似.
$('xxx').show()
//原生JS寫法node.style.display = 'block'
  • toggle( [duration ] [, easing ] [, complete ] )
    事件處理套件也有一個(gè)名為.toggle()方法促煮。哪一個(gè)被調(diào)用取決于傳遞的參數(shù)的設(shè)置
    用來切換元素的隱藏邮屁、顯示,類似于toggleClass菠齿,用法和show佑吝、hide類似.。如果這個(gè)元素以前是隱藏的绳匀,那么點(diǎn)擊就是展示芋忿,如果是展示的,點(diǎn)擊就會(huì)隱藏疾棵。
  • 相關(guān)參數(shù)含義:
1. duration:動(dòng)畫持續(xù)了多久
$('xxx').hide(1000) //用了1秒的時(shí)間去隱藏
2. easing:表示過渡使用哪種緩動(dòng)函數(shù)戈钢,jQuery自身提供了'linear'和'swing'
//緩動(dòng)函數(shù)就是指在變化的過程中是先快后面還是先慢后快等等,liner就是一個(gè)線性的變化
3. complete:在動(dòng)畫完成時(shí)執(zhí)行的函數(shù),是一個(gè)回調(diào)函數(shù)
$('xxx').hide(1000,function(){
  console.log('hide')
})
//動(dòng)畫執(zhí)行完之后才會(huì)console.log出hide.

如果元素之前已經(jīng)設(shè)置了display的值陋桂,那么變化的最終結(jié)果也會(huì)是這個(gè)設(shè)置的值,不會(huì)更改蝶溶。比如div元素設(shè)置了display:inline-block嗜历,那么它hide之后再show的時(shí)候,最后的display還是inline-block抖所。與原生Js比較梨州,jQuery可以記住它原來的css屬性。

<div class = "box" style = "display: inline-block">hello</div>
<button id = "btn-box1">hide</button>
<button id = "btn-box2">show</button>
<script>
$('#btn-box1').on('click',function(){
  $('.box').hide(5000)
})
$('#btn-box2').on('click',function(){
  $('.box').show(5000)
})
</script>
  • .fadeIn( [duration ] [, easing ] [, complete ] )
    通過淡入的方式顯示匹配元素田轧,參數(shù)含義和上面相同
  • .fadeOut( [duration ] [, easing ] [, complete ] )
    通過淡出的方式隱藏匹配元素
  • .fadeTo( duration, opacity [, easing ] [, complete ] )
    調(diào)整匹配元素的透明度暴匠,方法通過匹配元素的不透明度做動(dòng)畫效果
  • .fadeToggle( [duration ] [, easing ] [, complete ] )
    通過匹配的元素的不透明度動(dòng)畫,來顯示或隱藏它們傻粘,方法執(zhí)行匹配元素的不透明度動(dòng)畫每窖。當(dāng)被可見元素調(diào)用時(shí),元素不透明度一旦達(dá)到0弦悉,display樣式屬性設(shè)置為none 窒典,所以元素不再影響頁面的布局。

滑動(dòng)

  • .slideDown( [duration ] [, easing ] [, complete ] )
    用滑動(dòng)動(dòng)畫顯示一個(gè)匹配元素稽莉,方法將給匹配元素的高度的動(dòng)畫瀑志,這會(huì)導(dǎo)致頁面的下面部分滑下去,彌補(bǔ)了顯示的方式
  • .slideUp( [duration ] [, easing ] [, complete ] )
    用滑動(dòng)動(dòng)畫隱藏一個(gè)匹配元素污秆,方法將給匹配元素的高度的動(dòng)畫劈猪,這會(huì)導(dǎo)致頁面的下面部分滑上去,當(dāng)一個(gè)隱藏動(dòng)畫后良拼,高度值達(dá)到0的時(shí)候战得,display 樣式屬性被設(shè)置為none,以確保該元素不再影響頁面布局庸推。 display 樣式屬性將被設(shè)置為none贡避,以確保該元素不再影響頁面布局痛黎。
  • .slideToggle( [duration ] [, easing ] [, complete ] )
    用滑動(dòng)動(dòng)畫顯示或隱藏一個(gè)匹配元素,方法將給匹配元素的高度的動(dòng)畫刮吧,這會(huì)導(dǎo)致頁面中湖饱,在這個(gè)元素下面的內(nèi)容往下或往上滑。display屬性值保存在jQuery的數(shù)據(jù)緩存中杀捻,所以display可以方便以后可以恢復(fù)到其初始值井厌。
    如果一個(gè)元素的display屬性值為inline,然后是隱藏和顯示致讥,這個(gè)元素將再次顯示inline仅仆。當(dāng)一個(gè)隱藏動(dòng)畫后,高度值達(dá)到0的時(shí)候垢袱,display 樣式屬性被設(shè)置為none墓拜,以確保該元素不再影響頁面布局。
  • slidedown,slideup的變化是有一個(gè)拉伸的效果请契,而hide()和show()的變化是整體的變大變小咳榜。

自定義動(dòng)畫

  • .animate( properties [, duration ] [, easing ] [, complete ] )
    properties是一個(gè)CSS屬性和值的對(duì)象,動(dòng)畫將根據(jù)這組對(duì)象移動(dòng)爽锥。
$('#clickme').click(function() {
  $('#book').animate({
    opacity: 0.25,
    left: '+=50',
    height: 'toggle'
  }, 5000, function() {
    // Animation complete.
  });
});
  • 沒有動(dòng)畫的時(shí)候涌韩,我們可以使用css設(shè)置元素的樣式,但是如果想把這個(gè)樣式變化變成連貫的氯夷,那么就要使用animate臣樱,設(shè)置這個(gè)參數(shù)后,就會(huì)從初始狀態(tài)變成設(shè)置的狀態(tài)腮考,這個(gè)過程是漸變的雇毫,不是一下子就變成的。
  • 寫了動(dòng)畫的時(shí)候踩蔚,不一定就會(huì)產(chǎn)生效果嘴拢,也要和css相對(duì)應(yīng),例如想要實(shí)現(xiàn)移動(dòng)效果寂纪,設(shè)置了top和left的值席吴,要在原元素上添加position:relative,否則就算是設(shè)置了top或者left也不會(huì)有移動(dòng)效果捞蛋。
//多個(gè)動(dòng)畫的代碼
$('#btn').on('click',function(){
  $div3.animate({ },function(){
    //function 是一個(gè)回調(diào)孝冒,相當(dāng)于動(dòng)畫完成之后要做的事情
    $div3.animate({ },function(){
      ....
    })
  })
})
/*就是第一個(gè)動(dòng)畫完成之后,執(zhí)行第二個(gè)動(dòng)畫拟杉,第二個(gè)動(dòng)畫執(zhí)行完成之后庄涡,
執(zhí)行第三個(gè)動(dòng)畫。搬设。穴店。撕捍。有幾個(gè)動(dòng)畫就要嵌套幾次。但是這個(gè)嵌套次數(shù)太多泣洞,代碼不是很好忧风,


所以animate就做了一個(gè)封裝,代碼如下:*/
//jQuery的鏈?zhǔn)秸{(diào)用
$div3.animate({ }).animate({ }).animate({ }).....


//第二種方案
$div3.animate({ });
$div3.animate({ });
....
$div3.animate({},function(){
  ...
})


//第三種優(yōu)化方案:
//把所有的樣式放到一個(gè)數(shù)組里面球凰,用animate遍歷這個(gè)數(shù)組
var actions = [
  {width: 80,height: 80,left: 0,top:0},
  {left: '200px'},
  ......
]
actions.forEach(function(action,idx){
  $div3.animate(action)
})

jQuery的鏈?zhǔn)秸{(diào)用

$div.hide().show().css()
因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=div.hide()%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%88%90%E4%B9%8B%E5%90%8E%EF%BC%8Creturn%E7%9A%84%E8%BF%98%E6%98%AF%E5%8E%9F%E6%9D%A5%E7%9A%84jQuery%E5%AF%B9%E8%B1%A1" alt="div.hide()這個(gè)函數(shù)執(zhí)行完成之后狮腿,return的還是原來的jQuery對(duì)象" mathimg="1">div。所以還可以繼續(xù).show()等呕诉。
等價(jià)于

$div.hide()
    .show()

.stop()和.finish()的區(qū)別

  • .finish:停止當(dāng)前動(dòng)畫缘厢,并清除動(dòng)畫隊(duì)列中所有未完成的動(dòng)畫,最終展示動(dòng)畫隊(duì)列最后一幀的最終狀態(tài)。
  • .stop( [clearQueue ] [, jumpToEnd ] )
    停止當(dāng)前正在運(yùn)行的動(dòng)畫,若果當(dāng)前隊(duì)列沒有執(zhí)行完甩挫,點(diǎn)擊stop贴硫,會(huì)立刻停止當(dāng)前隊(duì)列的執(zhí)行。
<body>
  <button id="btn1">start</button>
  <button id="btn2">step+50</button>
  <button id="btn3">step-50</button>
  <button id="btn4">auto</button>
  <button id="btn5">reset</button>
  <button id="btn6">stop(false,false)</button>
  <button id="btn7">stop(true,false)</button>
  <button id="btn8">stop(true,true)</button>
  <button id="btn9">finish</button>
  
  <div class="container">
    <div class="box"></div>
  </div>
  
  <script>
    $('#btn1').click(function(){
      $('.box').animate({
        left: '100px'
      }, 1000)
    })
    $('#btn2').click(function(){
      $('.box').animate({
        left: '+=50'
      }, 1000)
    })
    $('#btn3').click(function(){
      $('.box').animate({
        left: '-=50'
      }, 1000)
    })
    $('#btn4').click(function(){
      $('.box').animate({
        left: '100px'
      }, 1000)
      $('.box').animate({
        left: '100px',
        top: '100px'
      }, 1000)
      $('.box').animate({
        left: '0',
        top: '100px'
      }, 1000)
      $('.box').animate({
        left: '0',
        top: '0'
      }, 1000)
    })
    $('#btn5').click(function(){
      $('.box').animate({
        left: 0,
        top: 0
      }, 1000)
    })
    $('#btn6').click(function(){
      //停止當(dāng)前動(dòng)畫
      $('.box').stop()
    })
    $('#btn7').click(function(){
      //停止當(dāng)前動(dòng)畫伊者,并清除未執(zhí)行的動(dòng)畫隊(duì)列
      $('.box').stop(true, false)
    })
    $('#btn8').click(function(){
      //停止當(dāng)前動(dòng)畫英遭,并清除未執(zhí)行的動(dòng)畫隊(duì)列,并且當(dāng)前動(dòng)畫展示最終狀態(tài)
      $('.box').stop(true, true)
    })
    $('#btn9').click(function(){
      //停止當(dāng)前動(dòng)畫删壮,并清除未執(zhí)行的動(dòng)畫隊(duì)列贪绘,并且當(dāng)前動(dòng)畫展示最終狀態(tài)
      $('.box').finish()
    })

  </script>

.clearQueue

清除動(dòng)畫隊(duì)列中未執(zhí)行的動(dòng)畫兑牡。

slideToggle()

$('.ct .item').on('click',function(){
  $(this).find('p').slideToggle()
})
//當(dāng)點(diǎn)擊元素的時(shí)候央碟,從當(dāng)前元素里面找到p.
//若.item內(nèi)的P元素的內(nèi)容展示出來了,點(diǎn)擊事件則會(huì)隱藏內(nèi)容均函,若沒有展現(xiàn)出來亿虽,點(diǎn)擊事件則會(huì)展現(xiàn)內(nèi)容。

如果想實(shí)現(xiàn)點(diǎn)擊某一個(gè)p的時(shí)候苞也,內(nèi)容展現(xiàn)出來洛勉,但是其他p的內(nèi)容要隱藏起來∪绯伲或者點(diǎn)擊P1的時(shí)候收毫,p1的內(nèi)容展現(xiàn),但是點(diǎn)擊p2的時(shí)候殷勘,P2d的內(nèi)容展現(xiàn)此再,但是p1的消失,也就是p2的兄弟節(jié)點(diǎn)的內(nèi)容都消息

$('.ct .item').on('click',function(){
  $(this).find('p').sildeDown()
  //兄弟節(jié)點(diǎn)都去掉
  $(this).siblings().find('p').slideUp()
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玲销,一起剝皮案震驚了整個(gè)濱河市输拇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贤斜,老刑警劉巖策吠,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逛裤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡猴抹,警方通過查閱死者的電腦和手機(jī)带族,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洽糟,“玉大人炉菲,你說我怎么就攤上這事±だ#” “怎么了拍霜?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長薪介。 經(jīng)常有香客問我祠饺,道長,這世上最難降的妖魔是什么汁政? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任道偷,我火速辦了婚禮,結(jié)果婚禮上记劈,老公的妹妹穿的比我還像新娘勺鸦。我一直安慰自己,他們只是感情好目木,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布换途。 她就那樣靜靜地躺著,像睡著了一般刽射。 火紅的嫁衣襯著肌膚如雪军拟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天誓禁,我揣著相機(jī)與錄音懈息,去河邊找鬼。 笑死摹恰,一個(gè)胖子當(dāng)著我的面吹牛辫继,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俗慈,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姑宽,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了姜盈?” 一聲冷哼從身側(cè)響起低千,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后示血,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棋傍,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年难审,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘫拣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡告喊,死狀恐怖麸拄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黔姜,我是刑警寧澤拢切,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站秆吵,受9級(jí)特大地震影響淮椰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纳寂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一主穗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毙芜,春花似錦忽媒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灯抛,卻和暖如春金赦,著一層夾襖步出監(jiān)牢的瞬間音瓷,已是汗流浹背对嚼。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绳慎,地道東北人纵竖。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像杏愤,于是被迫代替她去往敵國和親靡砌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354