CSS動畫:keyframes用法介紹

jopen 8年前發布 | 16K 次閱讀 CSS 前端技術

在CSS動畫中,使用Transition技術是一種“隱式”的動畫方法,而相對應的,還有一種“顯式”的動畫技術,就是,你可以在CSS里直接指定動畫效果,這需要使用 keyframes 屬性了。

演示:秋葉飄落動畫

上面這個”秋葉飄落動畫”的CSS動畫演示應該是十分的精彩,充分展示了CSS動畫的優異特性。

下面我們來一步一步介紹如何制作 keyframes 動畫,先從一個會彈跳的盒子入手。

演示:會彈跳的盒子

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;
}

CSS動畫:keyframes用法介紹

觀看演示

這里的Keyframes使用了百分比,分別表示動畫的各個階段的動作場景。而之前的 “from” 和 “to” 關鍵詞其實等效于 “0%” 和 “100%” 。

CSS Keyframes動畫的目的是提供WEB開發者更簡單的創作豐富多彩的頁面效果的途徑。大多數的動畫效果都是表現性質的,因此屬于瀏覽器樣式系統。程序員通過簡單的聲明樣式就能創作出這些效果動畫,完全替代了之前用JavaScript技術手工的實現。

來自: http://www.webhek.com/css-animation-keyframes

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!