css3,transition,animation兩種動畫實現區別


我們為頁面設置動畫時,往往會用到transition還有animation以及transfrom屬性或者用到js。

其實通常情況下,對於使用js我們更加傾向於使用css來設置動畫。

transfrom就不用說了,它本身就一個css屬性。

transition 是可以為一個或者多個用數值表示的CSS屬性發生變化時添加動畫效果。

.demo{

overflow: hidden;

width: 100px;

height: 100px;

position: relative;

}

 

.aaa{ width: 100%; height: 50px;

position: absolute; bottom: -50px; opacity: 0;

-webkit-transition: all 0.85s ease; -moz-transition: all 0.85s ease; -o-transition: all 0.85s ease; -ms-transition: all 0.85s ease; transition: all 0.85s ease; }

 

.demo:hover .aaa{

opacity: 1;

bottom: 0;

}

transition的屬性有transition-property(css屬性name,transition效果)、transition-duration(動畫持續多少秒)、transition-timing-function(動畫的變化過程速度曲線)、transition-delay(動畫開始的時候,也就是延遲多少秒)

相對於animation,transition從某種層度上講,動畫控制的更粗一些,它唯一能定義動畫變化過程效果的便是transition-timing-function屬性,而animation提供的keyframe方法,可以讓你手動去指定每個階段的屬性。此外animation還封裝了循環次數,動畫延遲,反向循環等功能,更加自由和強大。

.animation:before, .animation:after{

content:'';

width: 50%;

height: 100%; 

animation: mymove 3s ease-in-out alternate infinite; -moz-animation: mymove 3s ease-in-out alternate infinite; -webkit-animation: mymove 3s ease-in-out alternate infinite; -o-animation: mymove 3s ease-in-out alternate infinite;

@keyframes mymove {

from { width: 50%; }

to { width: 0%; }

}

這里就不貼出keyframes瀏覽器適配了。

同時還可以這樣想,transition是從:hover延伸出來的,不管是動態設置的還是非動態設置的過渡效果,只要過渡效果指定的屬性值發生了變化就會觸發過渡效果。

而animation是從flash延伸出來的,使用關鍵幀的概念,如果是非動態設置的,那么頁面加載完后就會觸發動畫效果;如果是動態設置的,那么設置完后(假設沒有設置 delay)就會觸發動畫效果。后面再改變屬性值也不會觸發動畫效果了,除了一種情況(這種情況不會觸發transition定義的過渡效果),就是元素從 display:none 狀態變成非 display:none 狀態時,也會觸發動畫效果。

極端條件下,animation占用的資源相應的比transition多,所以如果能用transition實現,就盡量用transition來實現,如果追求復雜更自由的動畫,就可以用animation。



作者:Yhong_
鏈接:https://www.jianshu.com/p/3befa0f2fa02
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM