# CSS3 動畫
## CSS3 動畫
通過 CSS3,我們能夠創建動畫,這可以在許多網頁中取代動畫圖片、Flash 動畫以及 JavaScript。
CSS3 動畫
## CSS3 @keyframes 規則
如需在 CSS3 中創建動畫,您需要學習 @keyframes 規則。
@keyframes 規則用于創建動畫。在 @keyframes 中規定某項 CSS 樣式,就能創建由當前樣式逐漸改為新樣式的動畫效果。
## 瀏覽器支持
| 屬性 | 瀏覽器支持 |
| --- | --- |
| @keyframes |
| animation |
Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 規則和 animation 屬性。
Chrome 和 Safari 需要前綴 -webkit-。
注釋:Internet Explorer 9,以及更早的版本,不支持 @keyframe 規則或 animation 屬性。
## 實例
```
@keyframes myfirst
{
from {background: red;}
to {background: yellow;}
}
@-moz-keyframes myfirst /* Firefox */
{
from {background: red;}
to {background: yellow;}
}
@-webkit-keyframes myfirst /* Safari 和 Chrome */
{
from {background: red;}
to {background: yellow;}
}
@-o-keyframes myfirst /* Opera */
{
from {background: red;}
to {background: yellow;}
}
```
## CSS3 動畫
當您在 @keyframes 中創建動畫時,請把它捆綁到某個選擇器,否則不會產生動畫效果。
通過規定至少以下兩項 CSS3 動畫屬性,即可將動畫綁定到選擇器:
* 規定動畫的名稱
* 規定動畫的時長
### 實例
把 "myfirst" 動畫捆綁到 div 元素,時長:5 秒:
```
div
{
animation: myfirst 5s;
-moz-animation: myfirst 5s; /* Firefox */
-webkit-animation: myfirst 5s; /* Safari 和 Chrome */
-o-animation: myfirst 5s; /* Opera */
}
```
注釋:您必須定義動畫的名稱和時長。如果忽略時長,則動畫不會允許,因為默認值是 0。
## 什么是 CSS3 中的動畫?
動畫是使元素從一種樣式逐漸變化為另一種樣式的效果。
您可以改變任意多的樣式任意多的次數。
請用百分比來規定變化發生的時間,或用關鍵詞 "from" 和 "to",等同于 0% 和 100%。
0% 是動畫的開始,100% 是動畫的完成。
為了得到最佳的瀏覽器支持,您應該始終定義 0% 和 100% 選擇器。
### 實例
當動畫為 25% 及 50% 時改變背景色,然后當動畫 100% 完成時再次改變:
```
@keyframes myfirst
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}
@-moz-keyframes myfirst /* Firefox */
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}
@-webkit-keyframes myfirst /* Safari 和 Chrome */
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}
@-o-keyframes myfirst /* Opera */
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}
```
### 實例
改變背景色和位置:
```
@keyframes myfirst
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
@-moz-keyframes myfirst /* Firefox */
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
@-webkit-keyframes myfirst /* Safari 和 Chrome */
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
@-o-keyframes myfirst /* Opera */
{
0% {background: red; left:0px; top:0px;}
25% {background: yellow; left:200px; top:0px;}
50% {background: blue; left:200px; top:200px;}
75% {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}
```
## CSS3 動畫屬性
下面的表格列出了 @keyframes 規則和所有動畫屬性:
| 屬性 | 描述 | CSS |
| --- | --- | --- |
| [@keyframes](/cssref/pr_keyframes.asp "CSS3 @keyframes 規則") | 規定動畫。 | 3 |
| [animation](/cssref/pr_animation.asp "CSS3 animation 屬性") | 所有動畫屬性的簡寫屬性,除了 animation-play-state 屬性。 | 3 |
| [animation-name](/cssref/pr_animation-name.asp "CSS3 animation-name 屬性") | 規定 @keyframes 動畫的名稱。 | 3 |
| [animation-duration](/cssref/pr_animation-duration.asp "CSS3 animation-duration 屬性") | 規定動畫完成一個周期所花費的秒或毫秒。默認是 0。 | 3 |
| [animation-timing-function](/cssref/pr_animation-timing-function.asp "CSS3 animation-timing-function 屬性") | 規定動畫的速度曲線。默認是 "ease"。 | 3 |
| [animation-delay](/cssref/pr_animation-delay.asp "CSS3 animation-delay 屬性") | 規定動畫何時開始。默認是 0。 | 3 |
| [animation-iteration-count](/cssref/pr_animation-iteration-count.asp "CSS3 animation-iteration-count 屬性") | 規定動畫被播放的次數。默認是 1。 | 3 |
| [animation-direction](/cssref/pr_animation-direction.asp "CSS3 animation-direction 屬性") | 規定動畫是否在下一周期逆向地播放。默認是 "normal"。 | 3 |
| [animation-play-state](/cssref/pr_animation-play-state.asp "CSS3 animation-play-state 屬性") | 規定動畫是否正在運行或暫停。默認是 "running"。 | 3 |
| [animation-fill-mode](/cssref/pr_animation-fill-mode.asp "CSS3 animation-fill-mode 屬性") | 規定對象動畫時間之外的狀態。 | 3 |
下面的兩個例子設置了所有動畫屬性:
### 實例
運行名為 myfirst 的動畫,其中設置了所有動畫屬性:
```
div
{
animation-name: myfirst;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-play-state: running;
/* Firefox: */
-moz-animation-name: myfirst;
-moz-animation-duration: 5s;
-moz-animation-timing-function: linear;
-moz-animation-delay: 2s;
-moz-animation-iteration-count: infinite;
-moz-animation-direction: alternate;
-moz-animation-play-state: running;
/* Safari 和 Chrome: */
-webkit-animation-name: myfirst;
-webkit-animation-duration: 5s;
-webkit-animation-timing-function: linear;
-webkit-animation-delay: 2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-play-state: running;
/* Opera: */
-o-animation-name: myfirst;
-o-animation-duration: 5s;
-o-animation-timing-function: linear;
-o-animation-delay: 2s;
-o-animation-iteration-count: infinite;
-o-animation-direction: alternate;
-o-animation-play-state: running;
}
```
### 實例
與上面的動畫相同,但是使用了簡寫的動畫 animation 屬性:
```
div
{
animation: myfirst 5s linear 2s infinite alternate;
/* Firefox: */
-moz-animation: myfirst 5s linear 2s infinite alternate;
/* Safari 和 Chrome: */
-webkit-animation: myfirst 5s linear 2s infinite alternate;
/* Opera: */
-o-animation: myfirst 5s linear 2s infinite alternate;
}
```
- HTML 基礎
- HTML 簡介
- 基本的 HTML 標簽 - 四個實例
- HTML 元素
- HTML 屬性
- HTML 標題
- HTML 段落
- HTML 文本格式化
- HTML 編輯器
- HTML CSS
- HTML 鏈接
- HTML 圖像
- HTML 表格
- HTML 列表
- HTML <div> 和 <span>
- HTML 布局
- HTML 表單和輸入
- HTML 框架
- HTML Iframe
- HTML 背景
- HTML 顏色
- HTML 顏色名
- HTML 4.01 快速參考
- HTML 高級
- HTML <!DOCTYPE>
- HTML 頭部元素
- HTML 腳本
- HTML 字符實體
- HTML 統一資源定位器
- HTML URL 字符編碼
- HTML Web Server
- HTML 媒體
- HTML 多媒體
- HTML Object 元素
- HTML 音頻
- HTML 視頻
- HTML XHTML
- XHTML 簡介
- XHTML - 元素
- XHTML - 屬性
- HTML 5 教程
- HTML 5 簡介
- HTML 5 視頻
- HTML 5 Video + DOM
- HTML 5 音頻
- HTML 5 拖放
- HTML 5 Canvas
- HTML5 內聯 SVG
- HTML 5 Canvas vs. SVG
- HTML5 地理定位
- HTML 5 Web 存儲
- HTML 5 應用程序緩存
- HTML 5 Web Workers
- HTML 5 服務器發送事件
- HTML5 Input 類型
- HTML5 表單元素
- HTML5 表單屬性
- CSS 基礎
- CSS 簡介
- CSS 基礎語法
- CSS 高級語法
- CSS 派生選擇器
- CSS id 選擇器
- CSS 類選擇器
- CSS 屬性選擇器
- 如何創建 CSS
- CSS 樣式
- CSS 背景
- CSS 文本
- CSS 字體
- CSS 鏈接
- CSS 列表
- CSS 表格
- CSS 輪廓
- CSS 框模型
- CSS 框模型概述
- CSS 內邊距
- CSS 邊框
- CSS 外邊距
- CSS 外邊距合并
- CSS 定位
- CSS 定位 (Positioning)
- CSS 相對定位
- CSS 絕對定位
- CSS 浮動
- CSS 選擇器
- CSS 元素選擇器
- CSS 分組
- CSS 類選擇器詳解
- CSS ID 選擇器詳解
- CSS 屬性選擇器詳解
- CSS 后代選擇器
- CSS 屬性選擇器詳解
- CSS 后代選擇器
- CSS 子元素選擇器
- CSS 相鄰兄弟選擇器
- CSS 偽類 (Pseudo-classes)
- CSS 偽元素 (Pseudo-elements)
- CSS 高級
- CSS 水平對齊
- CSS 尺寸 (Dimension)
- CSS 分類 (Classification)
- CSS 導航條
- CSS 圖片庫
- CSS 圖像透明度
- CSS2 媒介類型
- CSS 注意事項
- CSS3 教程
- CSS3 簡介
- CSS3 邊框
- CSS3 背景
- CSS3 文本效果
- CSS3 字體
- CSS3 2D 轉換
- CSS3 3D 轉換
- CSS3 過渡
- CSS3 動畫
- CSS3 多列
- CSS3 用戶界面
- Firebug 教程
- Firebug 教程
- 使用Firebug查看和編輯HTML和CSS
- 使用 Firebug 調試 JavaScript
- Firebug頁面概況查看
- Firebug動態執行JavaScript
- Firebug記錄Javascript日志
- Firebug監控網絡情況
- 免責聲明