CSS動畫:keyframes用法介紹
在CSS動畫中,使用Transition技術是一種“隱式”的動畫方法,而相對應的,還有一種“顯式”的動畫技術,就是,你可以在CSS里直接指定動畫效果,這需要使用 keyframes 屬性了。
上面這個”秋葉飄落動畫”的CSS動畫演示應該是十分的精彩,充分展示了CSS動畫的優異特性。
下面我們來一步一步介紹如何制作 keyframes 動畫,先從一個會彈跳的盒子入手。
演示:會彈跳的盒子
用CSS聲明這樣的動畫效果非常簡單。首先,用 @keyframes 描述動畫效果規則。
@keyframes bounce { from { left: 0px; } to { left: 200px; } }
在一個 @keyframes 代碼塊里,包含著一系列的CSS規則,統稱為 keyframes。 一個 keyframe 定義了一個完整動畫里某一時刻的一種動畫樣式。動畫繪制引擎會連貫平滑的實現各種樣式間的轉換。在上面的被定義為 “bounce” 的動畫中,有兩個 keyframes: 一個是動畫的起始狀態( “from” 代碼塊) 和終止狀態 ( “to” 代碼塊)。
一旦定義完成了動畫后,我們就可以使用 animation-name 將其與動畫目標元素關聯起來。
div { animation-name: bounce; animation-duration: 4s; animation-iteration-count: 10; animation-direction: alternate; }
上面的這段CSS規則中就綁定了 “bounce” 動畫,而且還設定了動畫持續時間為 4 秒鐘,一共執行10次,而且間隔著反向執行一次。
下面,我們要制作一個更復雜的動畫,涉及到旋轉、背景色、透明度等技術,需要用到多個 keyframes。
@keyframes pulse { 0% { background-color: red; opacity: 1.0; transform: scale(1.0) rotate(0deg); } 33% { background-color: blue; opacity: 0.75; transform: scale(1.1) rotate(-5deg); } 67% { background-color: green; opacity: 0.5; transform: scale(1.1) rotate(5deg); } 100% { background-color: red; opacity: 1.0; transform: scale(1.0) rotate(0deg); } } .pulsedbox { animation-name: pulse; animation-duration: 4s; animation-direction: alternate; animation-timing-function: ease-in-out; }
觀看演示
這里的Keyframes使用了百分比,分別表示動畫的各個階段的動作場景。而之前的 “from” 和 “to” 關鍵詞其實等效于 “0%” 和 “100%” 。
CSS Keyframes動畫的目的是提供WEB開發者更簡單的創作豐富多彩的頁面效果的途徑。大多數的動畫效果都是表現性質的,因此屬于瀏覽器樣式系統。程序員通過簡單的聲明樣式就能創作出這些效果動畫,完全替代了之前用JavaScript技術手工的實現。