animation和transition的區(qū)別

CSS3動畫和JS動畫的區(qū)別
JS 實(shí)現(xiàn)的是幀動畫
CSS3 實(shí)現(xiàn)的是補(bǔ)間動畫
- 幀動畫:使用定時(shí)器,每隔一段時(shí)間,更改當(dāng)前的元素
- 補(bǔ)間動畫: 過渡(加過渡只要狀態(tài)發(fā)生改變產(chǎn)生動畫)動畫(多個(gè)節(jié)點(diǎn)來控制動畫)性能會更好
transition
transition是一個(gè)簡單的動畫屬性,可以看作是是animation的簡化版本,通常拿來配合事件觸發(fā)使用,簡單易用
transition的屬性值
描述 | 屬性 |
---|---|
transition-property | 需要過渡的屬性,也可以是all,不能用block,none等 |
transition-duration | 指定從一個(gè)屬性到另一個(gè)屬性過渡所要花費(fèi)的時(shí)間。默認(rèn)值為0,為0時(shí),表示變化是瞬時(shí)的,看不到過渡效果 |
transiton-timing-function | 就是過渡的動畫類型??捎玫念愋陀衛(wèi)iner(勻速)、ease-in(減速)、ease-out(加速)ease-in-out(先加速再減速)、cubic-bezier:三次貝塞爾曲線,可以定制 |
transition-delay | 指定檢測到過渡行為之后延遲一定時(shí)間后才開始進(jìn)行執(zhí)行 |
transition特性
transition需用事件觸發(fā)【比如加個(gè)hover偽類】,不能在網(wǎng)頁加載時(shí)自動發(fā)生
一次性,不能重復(fù)發(fā)生,除非一再觸發(fā)
只有兩個(gè)狀態(tài):開始和結(jié)束狀態(tài)
一條transition規(guī)則只能定義一個(gè)屬性
<body> <div ></div> </body> <style> .box { height: 100px; width: 100px; background-color: lightpink; transition: width 1s 0.5s ease-in-out; } .box:hover { width: 200px; } </style>
效果如下
也可以在 hover
中寫 transition: width 1s 0.5s ease-in-out
.box:hover { width: 200px; transition: width 1s 0.5s ease-in-out; }
其實(shí)寫在hover上也是可以的,但是當(dāng)我移出元素后,元素寬度立馬恢復(fù),而沒有過渡!
原因很簡單,你transistion只寫在hover上,也就是說只有鼠標(biāo)移上去的時(shí)候,該偽類才生效
animation
animation的屬性值
屬性 | 描述 |
---|---|
animation-name | 用來調(diào)用@keyframes定義好的動畫,與@keyframes定義的動畫名稱一致 |
animation-duration | 規(guī)定動畫完成一個(gè)周期所花費(fèi)的秒或毫秒。默認(rèn)是 0 |
animation-timing-function | 速度曲線,和transition-timing-function一樣,可用的類型有l(wèi)iner(勻速)、ease-in(減速)、ease-out(加速)ease-in-out(先加速再減速)、cubic-bezier:三次貝塞爾曲線,可以定制 |
animation-delay | 規(guī)定動畫何時(shí)開始,默認(rèn)是 0 |
animation-iteration-count | 規(guī)定動畫被播放的次數(shù)。默認(rèn)是 1 |
animation-direction | normal 默認(rèn)值,如果設(shè)置為normal時(shí),動畫每次循環(huán)都是向前(即按順序)播放,alternate(輪流),動畫播放在第偶數(shù)次向前播放,第奇數(shù)次向反方向播放(animation-iteration-count取值大于1時(shí)設(shè)置有效) |
animation-play-state | running,可以通過該值將暫停的動畫重新播放,這里的重新播放不是從元素動畫的開始播放,而是從暫停的那個(gè)位置開始播放,paused,暫停播放 |
animation-fill-mode | 默認(rèn)情況下,動畫結(jié)束后,元素的樣式將回到起始狀態(tài),animation-fill-mode屬性可以控制動畫結(jié)束后元素的樣式。主要具有四個(gè)屬性值:none(默認(rèn),回到動畫沒開始時(shí)的狀態(tài)。),forwards(動畫結(jié)束后動畫停留在結(jié)束狀態(tài)),backwords(動畫回到第一幀的狀態(tài)),both(根據(jù)animation-direction輪流應(yīng)用forwards和backwards規(guī)則) |
<body> <div ></div> </body> <style> .box { height: 200px; width: 200px; animation: 3s type forwards alternate infinite; animation-play-state: running; } .box:hover { animation-play-state: paused; } @keyframes type { from { background: yellowgreen } 50% { background: yellow } to { background: aquamarine } } </style>
當(dāng)鼠標(biāo)移入的時(shí)候暫停,移出的時(shí)候繼續(xù)變換顏色
transform
首先要注意的是transform屬性是靜態(tài)屬性,只要寫進(jìn)style里就會直接顯示生效,不會出現(xiàn)動畫過程
通過使用transform屬性,能夠?qū)υ剡M(jìn)行移動(translate)、縮放(scale)、旋轉(zhuǎn)(rotate)、翻轉(zhuǎn)(skew),更多詳細(xì)參數(shù)可以參考CSS3 transform 屬性
總結(jié)
區(qū)別 | transition | animation |
---|---|---|
是否能自動執(zhí)行 | 不能,需要事件觸發(fā),比如hover | 能 |
能否重復(fù)發(fā)生 | 不能,除非在一次觸發(fā) | 能 |
能否包含多個(gè)狀態(tài) | 不能,只有開始和結(jié)束狀態(tài) | 能,比如從0% 到100%,任意指定過渡狀態(tài) |
能否暫停 | 不能,一次性 | 能,比如hover事件觸發(fā)暫停 |
能否定義速度曲線 | 能 | 能 |
能否定義某個(gè)屬性值過渡 | 能 | 能 |
以上就是animation和transition的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于animation和transition的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
css transition animation的使用(內(nèi)含貝賽爾曲線詳解)
這篇文章主要介紹了css transition animation的使用(內(nèi)含貝賽爾曲線詳解),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們2019-09-03css動畫屬性使用及實(shí)例代碼(transition/transform/animation)
這篇文章主要介紹了css動畫屬性使用及實(shí)例代碼(transition/transform/animation) ,需要的朋友可以參考下2019-05-09使用CSS transition和animation改變漸變狀態(tài)的實(shí)現(xiàn)方法
CSS漸變特性對于我們的幫助已經(jīng)非常強(qiáng)大了,它們可以幫助我們繪圖、 創(chuàng)建圖片占位符 、制作環(huán)形進(jìn)度條等等。接下來通過本文給大家介紹使用CSS transition和animation改變漸2018-10-29CSS3與動畫有關(guān)的屬性transition、animation、transform對比(史上最全
這篇文章主要介紹了CSS3與動畫有關(guān)的屬性transition、animation、transform對比,通過瀏覽器兼容性,用法和對比更深刻的展示了彼此之間的異同,具體操作步驟大家可查看下文2017-08-18CSS3中動畫屬性transform、transition和animation屬性的區(qū)別
最近在項(xiàng)目中用到了CSS3中的動畫屬性。無奈對于css3幾個(gè)新加的屬性不太熟悉,常常容易搞混。所以從網(wǎng)站研究了點(diǎn)資料,總結(jié)一下,方便有需要的朋友們可以參考學(xué)習(xí)。2016-09-25