# 第 25 章 CSS3 過渡效果
學習要點:
1.過渡簡介
2.transition-property
3.transition-duration
4.transition-timing-function
5.transition-delay
6.簡寫和版本
主講教師:李炎恢
本章主要探討 HTML5?中 CSS3?的過渡效果,通過這個功能可以不借助 JavaScript?來實現簡單的用戶交互功能。
**一.過渡簡介**
過渡效果一般是通過一些簡單的 CSS?動作觸發平滑過渡功能,比如::hover、:focus、:active、:checked 等。CSS3 提供了?transition 屬性來實現這個過渡功能,主要屬性如下表:
| **屬性** | **說明** |
| --- | --- |
| transition-property | 指定過渡或動態模擬的 CSS?屬性 |
| transition-duration | 指定完成過渡所需的時間 |
| transition-timing-function | 指定過渡的函數 |
| transition-delay | 指定過渡開始出現的延遲時間 |
| transition | 簡寫形式,按照上門四個屬性值連寫 |
?我們先創建一個沒有過渡效果的元素,然后通過:hover?來觸發它。在沒有任何過渡效果的觸發,會立即生硬的執行觸發。
//設置元素樣式?
```
div { width: 200px; height: 200px; border: 1px solid green;
}
```
//鼠標懸停后背景變黑,文字變白?
```
div:hover { background-color: black; color: white; margin-left: 50px;
}
```
**二.****transition-property**
首先,設置過渡的第一個屬性就是指定過渡的屬性。同樣,你需要指定你要過渡某個元素的兩套樣式用于用戶和頁面的交互。那么就使用 transition-property?屬性,詳細屬性值如下表:
| **屬性值** | **說明** |
| --- | --- |
| none | 沒有指定任何樣式 |
| all | 默認值,指定元素所支持 transition-property?屬性的樣式 |
| 指定樣式 | 指定支持 transition-property?的樣式 |
從上門的列表中來看,一般來說,none?用于本身有過渡樣式從而取消。而 all,則是支持所有 transition-property?樣式,還有一種是指定 transition-property?中的某些樣式。那么 transition-proerty?支持的樣式有哪些?如下表所示:
| **樣式名稱** | **樣式類型** |
| --- | --- |
| background-color | color(顏色) |
| background-image | only gradients(漸變) |
| background-position | percentage, length(百分比,長度值) |
| border-bottom-color | color |
| border-bottom-width | length |
| border-color | color |
| border-left-color | color |
| border-left-width | length |
| border-right-color | color |
| border-right-width | length |
| border-spacing | length |
| border-top-color | color |
| border-top-width | length |
| border-width | length |
| bottom | length, percentage |
| color | color |
| crop | rectangle |
| font-size | length, percentage |
| font-weight | number |
| grid-* | various |
| height | length, percentage |
| left | length, percentage |
| letter-spacing | length |
| line-height | number, length, percentage |
| margin-bottom | length |
| margin-left | length |
| margin-right | length |
| margin-top | length |
| max-height | length, percentage |
| max-width | length, percentage |
| min-height | length, percentage |
| min-width | length, percentage |
| opacity | number |
| outline-color | color |
| outline-offset | integer |
| outline-width | length |
| padding-bottom | length |
| padding-left | length |
| padding-right | length |
| padding-top | length |
| right | length, percentage |
| text-indent | length, percentage |
| text-shadow | shadow |
| top | length, percentage |
| vertical-align | keywords, length, percentage |
| visibility | visibility |
| width | length, percentage |
| word-spacing | length, percentage |
| z-index | integer |
| zoom | number |
//設置背景和文字顏色采用過渡效果?
```
transition-property: background-color, color, margin-left;
```
**三.****transition-duration**
如果單純設置過渡的樣式,還不能夠立刻實現效果。必須加上過渡所需的時間,因為默認情況下過渡時間為 0。
//設置過渡時間為?1 秒鐘,如果是半秒鐘可以設置為.5s
```
transition-duration: 1s;
```
**四.****transition-timing-function**
當過渡效果運行時,比如產生緩動效果。默認情況下的緩動是:元素樣式從初始狀態過渡到終止狀態時速度由快到慢,逐漸變慢,即 ease。也是默認值,其他幾種緩動方式如下表所示:

//恒定速度
```
transition-timing-function: linear;
```
以上五種都是設定好的屬性值,我們也可以自定義這個緩動。使用 cubic-bezier()?屬性值,里面傳遞四個參數 p0,p1,p2,p3,值在 0~1?之間。
//自定義緩動
```
transition-timing-function: cubic-bezier(0.25, 0.67, 0.11, 0.55);
```
至于具體這些數值干什么的,怎么才可以精確得到相關的信息,這個要了解計算機圖形學中的三次貝塞爾曲線的相關知識,類似與 photoshop?中的曲線調色。這里我們忽略。
還有一種不是平滑過渡,是跳躍式過渡,屬性值為:steps(n,type)。第一個值是一個數值,表示跳躍幾次。第二個值是 start?或者 end,可選值。表示開始時跳躍,還是結束時跳躍。
//跳躍?10 次至結束
```
transition-timing-function: steps(10,end);
```
**五.****transition-delay**
這個屬性可以設置一個過渡延遲效果,就是效果在設置的延遲時間后再執行。使用 transition-delay 屬性值。如果有多個樣式效果,可以設置多個延遲時間,以空格隔開。
//設置延遲效果
```
transition-delay: 0s, 1s, 0s;
```
**六.簡寫和版本**
我可以直接使用 transition?來簡寫,有兩種形式的簡寫。第一種是,每個樣式單獨聲明;第二種是不去考慮樣式,即使用 all?全部聲明。
//單獨聲明
```
transition: background-color 1s ease 0s, color 1s ease 0s, margin-left 1s ease 0s;
```
//如果每個樣式都是統一的,直接使用?all
```
transition: all 1s ease 0s;
```
為了兼容舊版本,需要加上相應的瀏覽器前綴,版本信息如下表:
| | Opera | Firefox | Chrome | Safari | IE |
| --- | --- |
| 支持需帶前綴 | 15 ~ 22 | 5 ~ 15 | 4 ~ 25 | 3.1 ~ 6 | 無 |
| 支持不帶前綴 | 23+ | 16+ | 26+ | 6.1+ | 10.0+ |
?//兼容完整版
```
-webkit-transition: all 1s ease 0s;
-moz-transition: all 1s ease 0s;
-o-transition: all 1s ease 0s;
-ms-transition: all 1s ease 0s;
transition: all 1s ease 0s;
```
- 介紹
- HTML/CSS 教程
- 第 1 章 HTML5 概述
- 第 2 章 基本格式
- 第 3 章 文本元素
- 第 4 章 超鏈接和路徑
- 第 5 章 分組元素
- 第 6 章 表格元素
- 第 7 章 文檔元素
- 第 8 章 嵌入元素
- 第 9 章 音頻和視頻
- 第 10 章 表單元素[上]
- 第 10 章 表單元素[中]
- 第 10 章 表單元素[下]
- 第 11 章 全局屬性和其他
- 第 12 章 CSS 入門
- 第 13 章 CSS 選擇器[上]
- 第 14 章 CSS 顏色與度量單位
- 第 15 章 CSS 文本樣式[上]
- 第 15 章 CSS 文本樣式[下]
- 第 16 章 CSS 盒模型[上]
- 第 16 章 CSS 盒模型[下]
- 第 17 章 CSS 邊框與背景[上]
- 第 17 章 CSS 邊框與背景[下]
- 第 18 章 CSS 表格與列表
- 第 19 章 CSS 其他樣式
- 第 20 章 CSS3 前綴和 rem
- 第 21 章 CSS3 文本效果
- 第 21 章 CSS3 文本效果
- 第 23 章 CSS3 邊框圖片效果
- 第 24 章 CSS3 變形效果[下]
- 第 25 章 CSS3 過渡效果
- 第 26 章 CSS3 動畫效果
- 第 27 章 CSS 傳統布局[上]
- 第 27 章 CSS 傳統布局[下]
- 第 28 章 CSS3 多列布局
- 第 29 章 CSS3 彈性伸縮布局[上]
- 第 29 章 CSS3 彈性伸縮布局[中]
- 第 29 章 CSS3 彈性伸縮布局[下]
- 第 30 章 使用 Emmet 插件
- Bootstrap 教程
- 第 1 章 Bootstrap 介紹
- 第 2 章 排版樣式
- 第 3 章 表格和按鈕
- 第 4 章 表單和圖片
- 第 5 章 柵格系統
- 第 6 章 輔組類和響應式工具
- 第 7 章 圖標菜單按鈕組件
- 第 8 章 輸入框和導航組件
- 第 9 章 路徑分頁標簽和徽章組件
- 第 10 章 巨幕頁頭縮略圖和警告框組件
- 第 11 章 進度條媒體對象和 Well 組件
- 第 12 章 列表組面板和嵌入組件
- 第 13 章 模態框插件
- 第 14 章 下拉菜單和滾動監聽插件
- 第 15 章 標簽頁和工具提示插件
- 第 16 章 彈出框和警告框插件
- 第 17 章 按鈕和折疊插件
- 第 18 章 輪播插件
- 第 19 章 附加導航插件
- 第 20 章 項目實戰--響應式導航[1]
- 第 20 章 項目實戰--響應式輪播圖[2]
- 第 20 章 項目實戰--首頁內容介紹[上][3]
- 第 20 章 項目實戰--首頁內容介紹[下][4]
- 第 20 章 項目實戰--資訊內容[5,6]
- 第 20 章 項目實戰--案例和關于[7]
- javaScript 教程
- javascript快速入門1--JavaScript前世今生,HelloWorld與開發環境
- javascript快速入門2--變量,小學生數學與簡單的交互
- javascript快速入門3--分支判斷與循環
- javascript快速入門4--函數與內置對象
- javascript快速入門5--數組與對象
- javascript快速入門6--Script標簽與訪問HTML頁面
- javascript快速入門7--ECMAScript語法基礎
- javascript快速入門8--值,類型與類型轉換
- javascript快速入門9--引用類型
- javascript快速入門10--運算符,語句
- javascript快速入門11--正則表達式
- javascript快速入門12--函數式與面向對象
- javascript快速入門13--BOM——瀏覽器對象模型(Browser Object Model)
- javascript快速入門14--DOM基礎
- javascript快速入門15--節點
- javascript快速入門15--表單
- javascript快速入門16--表格
- javascript快速入門17--事件
- javascript快速入門18--樣式
- javascript快速入門19--定位
- javascript快速入門20--Cookie
- javascript快速入門21--DOM總結
- javascript快速入門22--Ajax簡介
- javascript快速入門23--XHR—XMLHttpRequest對象
- javascript快速入門24--XML基礎
- javascript快速入門25--瀏覽器中的XML
- javascript快速入門26--XPath
- javascript快速入門27--XSLT基礎
- PHP 教程
- 第一章 如何加載運行已發布的PHP項目
- 第二章 PHP基礎
- 第三章 操作符與控制結構
- 第四章 數學運算
- 第五章 數組
- 第六章 目錄與文件
- 第七章 自定義函數
- 第八章 字符串處理
- 第九章 正則表達式
- 第十章 日期與時間
- 第十一章 表單與驗證
- 第十二章 會話控制
- 第十三章 上傳文件
- 第十四章 處理圖像
- 第十五章 MySQL 數據庫
- 第十六章 PHP 操作MySQL
- 第十七章 面向對象基礎
- 第十八章 面向對象的特性
- 第十九章 面向對象的工具