最近做了一個全屏分頁滾動效果的頁面,其中運用到一些關於動畫的元素。其實之前對於transition、animation、transform就總是有點混淆,也花過一段時間來研究他們之間具體的區別,但是時隔已久,這次用的時候發現還是有很多屬性不瞭解,因此決定整理一篇關於動畫和過渡的文章。
transition、animation、transform我的理解分別是:過渡、動畫以及變換。因爲前兩者的功能較爲接近,所以在這篇文章裏,我主要整理transition和animation的使用方法。
Transition
1.定義和用法
transition的使用在於讓元素的變化有一個過渡的過程,即可以指定狀態變化所需要的時間。transition是一個簡寫屬性,用於設置四個過渡屬性:
- transition-property
規定設置過渡效果的css屬性名稱
- none 沒有屬性會獲得過渡效果
- all 所有屬性都獲得過渡效果
- property 定義應用過渡效果的css屬性名稱列表,列表以逗號分隔
- transition-duration
必須設置,否則時長爲0,則不產生過渡效果
- transition-timing-function
- linear 勻速(等於 cubic-bezier(0,0,1,1))
- ease 先加速後減速(等於 cubic-bezier(0.25,0.1,0.25,1))
- ease-in 加速(等於 cubic-bezier(0.42,0,1,1))
- ease-out 減速(等於 cubic-bezier(0,0,0.58,1))
- ease-in-out 等同類似於ease(等於 cubic-bezier(0.42,0,0.58,1))
- cubic-bezier(n,n,n,n) 在 cubic-bezier 函數中定義自己的值。可能的值是 0 至 1 之間的數值
- transition-delay
2.transition的侷限性
- 需要事件觸發
基本結合滑過、點擊、焦點事件使用,無法在網頁加載時自動發生(除非結合js)
- 一次性,不能重複發生,除非一再觸發
- 只能定義開始和結束狀態,不能定義中間狀態,即只有兩個狀態
Animation
1.定義和用法
animation與transition的效果很類似,但是animation可以很好的避免上述所說的transition的侷限性。animation是一個簡寫屬性,用於設置以下幾個動畫屬性:
- animation- name
- none 規定無動畫效果(可用於覆蓋來自級聯的動畫)
- keyframename規定需要綁定到選擇器的keyframe的名稱
- animation -duration
必須設置,否則時長爲0,則沒有動畫效果
- animation -timing-function
- linear 勻速(等於 cubic-bezier(0,0,1,1))
- ease 先加速後減速(等於 cubic-bezier(0.25,0.1,0.25,1))
- ease-in 加速(等於 cubic-bezier(0.42,0,1,1))
- ease-out 減速(等於 cubic-bezier(0,0,0.58,1))
- ease-in-out 等同類似於ease(等於 cubic-bezier(0.42,0,0.58,1))
- cubic-bezier(n,n,n,n) 在 cubic-bezier 函數中定義自己的值。可能的值是 0 至 1 之間的數值
- animation -delay
- animation –iteration-count
- n 定義動畫播放的數值
- infinite 規定動畫應該無限次播放
- animation –direction
- normal 默認值。動畫正常播放
- alternate動畫應該輪流反向播放
- animation –play-state(目前支持該屬性的瀏覽器較少)
- running 默認值。規定動畫正在播放
- paused規定動畫已暫停
- animation –fill-mode(目前支持該屬性的瀏覽器較少)
- none 默認值。不設置對象動畫之外的狀態(不改變默認行爲)
- forwards設置對象狀態爲動畫結束時的狀態(在最後一個關鍵幀中定義)
- backwards 設置對象狀態爲動畫開始時的狀態(在 animation-delay 所指定的一段時間內,在動畫顯示之前,應用開始屬性值(在第一個關鍵幀中定義)。)
- both設置對象狀態爲動畫結束或開始的狀態(向前和向後填充模式都被應用)
本文基本是將W3C的屬性介紹進行了整合,有表述不正確的地方,歡迎指正。
參考網址及延伸閱讀:
Wscschool
http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html
http://www.zhangxinxu.com/wordpress/?p=1268