5分鐘學(xué)會(huì)CSS動(dòng)畫-Part2:animation

Part1看這里:Transition


學(xué)會(huì)Animation能夠?qū)懗霰葐渭兊膖ransition炫酷的多的動(dòng)畫效果勘畔,要學(xué)習(xí)animation前先要了解keyframes的寫法,這兩個(gè)屬性必須要成對(duì)使用才有效果杨凑。

1 keyframes

語(yǔ)法

@keyframes [name] {
  from {
    [styles];
       }
  to {
    [styles];
     }
}

keyframes不需要任何選擇器。name可以隨便起葵礼。from后面的大括號(hào)描述某個(gè)動(dòng)畫開(kāi)始是怎么樣的粗梭,to后面描述結(jié)束是怎么樣的艇纺。
比如

@keyframes myframes {
    from {
        height: 200px;
        background: orange;
    }
    to {
        height: 480px;
        background: pink;
        }
}

更高級(jí)點(diǎn)的寫法是把from和to換成0%和100%

@keyframes myframes {
0% {
    height: 200px
    }
100% { 
    height: 600px
    background: orange
    } 
} 

這樣做的好處是盾碗,你可以盡情添加更多的keyframe百分比媚污,描述更細(xì)致的動(dòng)畫效果,甚至不需要按照0-100的順序來(lái)寫,比如下面的寫法也是可以的:

@keyframes myframes {
  0% {
    height: 200px
          }
  30%, 100% {
    width: 400px
          }
  70% {
    height: 600px
    background: orange
          }
    }

2 Animation

有了keyframes廷雅,就可以在animation中使用它們來(lái)給元素添加動(dòng)畫耗美。

2.1 語(yǔ)法

.element {
    animation: [name][duration][timeing-function][delay][iteration-count][direction][fill-mode][play-state];
    }

animation是需要放在css選擇器中的,屬性中的第一個(gè)name就是需要跟keyframes的name相呼應(yīng)的航缀。比如下面的縮寫方式:

 .element {
    animation: myframes 2s ease-in 0s infinite normal forwards paused;
    }

2.2 animation屬性詳解

要徹底掌握animation幽歼,需要逐項(xiàng)弄清楚這些屬性究竟是什么意思:

  animation-name: myframes 
  animation-duration: 2s 
  animation-delay: 0s
  animation-timeing-function: ease-in-out  
  animation-iteration-count: infinite
  animation-direaction: normal
  animation-fill-mode: forwards
  animation-play-state: running
  • animation-delay 是我們需要等多久能看到動(dòng)畫開(kāi)始,而不是每次動(dòng)畫之間的間隔谬盐。如果想要控制每次動(dòng)畫的間隔,需要寫在keyframe的百分比中間诚些。

  • animation-direction可以是正常的normal飞傀,也可以是reverse,就是倒著來(lái)從100%到0%诬烹,可以配合animation-iteration-count比如count:3砸烦,就倒著執(zhí)行3次。還可以是alternate绞吁,正著1次幢痘,倒著1次,正著1次家破,這樣算3次颜说。

  • animation-fill-mode 非常有用购岗!它會(huì)控制動(dòng)畫結(jié)束之后這個(gè)元素的停止?fàn)顟B(tài)。normal就是最正常的反回最初的狀態(tài)门粪,而forwards則會(huì)讓元素停在動(dòng)畫結(jié)束的最后1幀的狀態(tài)喊积。我經(jīng)常使用fowards這個(gè)參數(shù)讓元素停止在動(dòng)畫結(jié)束的狀態(tài)。

  • animation-play-state 可以是running或者是paused玄妈,paused可以在任何時(shí)間點(diǎn)暫停動(dòng)畫乾吻,配合js使用。

2.3 如何觸發(fā)animation動(dòng)畫

  1. hover偽類
  2. class改變
  3. 增加新元素

2.4 示例應(yīng)用

  • 1
notify.gif

查看我的codepen代碼
像這樣一個(gè)通知小動(dòng)畫拟蜻,當(dāng)某個(gè)元素被hover的時(shí)候绎签,出現(xiàn)一個(gè)小通知,告知用戶有幾個(gè)新評(píng)論幾個(gè)新的點(diǎn)贊酝锅。
實(shí)現(xiàn)方法是先寫好一個(gè)自定義的keyframes(用Sass诡必,所以沒(méi)寫花括號(hào)和分號(hào))

@keyframes note
    0%
      opacity: 0
      transform: scale(0.1) rotate(30deg) translateY(50px) rotateX(90deg)
  50%
      transform: rotate(-10deg) rotateX(-2deg)
      opacity: 1
  70%
      transform: rotate(3deg)
  100%
      transform: scale(1)  

先將通知元素隱藏,display: none屈张。當(dāng)元素被hover的時(shí)候擒权,display: flex(或者block,這里用flex是因?yàn)橥ㄖ貎?nèi)部的布局需要)阁谆,并且執(zhí)行 animation: note 800ms ease-in-out forwards , fowards是為了讓動(dòng)畫執(zhí)行完停止在最后一幀而不是消失碳抄,note就是自定義的keyframes。

  • 2
    第二個(gè)示例是當(dāng)導(dǎo)航變化的時(shí)候场绿,四種list-view出現(xiàn)的動(dòng)畫效果:
appear.gif

查看我的codepen代碼

觸發(fā)動(dòng)畫的方式是添加class剖效。給點(diǎn)擊的導(dǎo)航添加一個(gè).active的class。

這個(gè)動(dòng)畫的重點(diǎn)是如何實(shí)現(xiàn)每個(gè)item漸次出現(xiàn)的效果焰盗,秘訣就是要給每個(gè)item添加不一樣的animation-delay:

如果你也用Sass寫css的話璧尸,只要寫個(gè)for循環(huán),就能非常容易的實(shí)現(xiàn):

  .menu-3 
    li
      opacity: 0

      @for $i from 1 through 6
        &:nth-child(#{$i})
          animation:
            name: menu3
            duration: 300ms
            timeing-function: ease-in-out
            fill-mode: forwards
           //這里的delay就是漸次效果的關(guān)鍵
            delay: 100ms * $i - 100

不用sass熬拒,直接寫css也是可以的爷光,可以查看源碼中css編譯之后的結(jié)果。

如果覺(jué)得有用澎粟,請(qǐng)給我點(diǎn)個(gè)贊吧(? ??_??)?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛀序,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子活烙,更是在濱河造成了極大的恐慌徐裸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啸盏,死亡現(xiàn)場(chǎng)離奇詭異重贺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門气笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)次企,“玉大人,你說(shuō)我怎么就攤上這事健民∈愠玻” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵秉犹,是天一觀的道長(zhǎng)蛉谜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)崇堵,這世上最難降的妖魔是什么型诚? 我笑而不...
    開(kāi)封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鸳劳,結(jié)果婚禮上狰贯,老公的妹妹穿的比我還像新娘。我一直安慰自己赏廓,他們只是感情好涵紊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著幔摸,像睡著了一般摸柄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上既忆,一...
    開(kāi)封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天驱负,我揣著相機(jī)與錄音,去河邊找鬼患雇。 笑死跃脊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苛吱。 我是一名探鬼主播酪术,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼翠储!你這毒婦竟也來(lái)了绘雁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤彰亥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后衰齐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體任斋,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了废酷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘟檩。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖澈蟆,靈堂內(nèi)的尸體忽然破棺而出墨辛,到底是詐尸還是另有隱情,我是刑警寧澤趴俘,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布睹簇,位于F島的核電站,受9級(jí)特大地震影響寥闪,放射性物質(zhì)發(fā)生泄漏太惠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一疲憋、第九天 我趴在偏房一處隱蔽的房頂上張望凿渊。 院中可真熱鬧,春花似錦缚柳、人聲如沸埃脏。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彩掐。三九已至,卻和暖如春翰绊,著一層夾襖步出監(jiān)牢的瞬間佩谷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工监嗜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谐檀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓裁奇,卻偏偏與公主長(zhǎng)得像桐猬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刽肠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color溃肪,font,text-align音五,li...
    wzhiq896閱讀 1,750評(píng)論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color惫撰,font,text-align躺涝,li...
    love2013閱讀 2,314評(píng)論 0 11
  • CSS 中的 transform厨钻,transition 和 animation 是分開(kāi)的三部分內(nèi)容,其中 tran...
    teabyii閱讀 1,297評(píng)論 0 25
  • CSS 中的 transform,transition 和 animation 是分開(kāi)的三部分內(nèi)容夯膀,其中 tran...
    單純的土豆閱讀 720評(píng)論 0 4
  • 管理情緒 一個(gè)靈感:今天的我腦袋里突然蹦出了一個(gè)靈感诗充,突然想明白了為什么我被別人刺激了之后會(huì)非常的生氣,而且在這個(gè)...
    暖心之地閱讀 467評(píng)論 0 2