transition 過渡如果想做出細膩的過渡效果,那么這個屬性可能會滿足你的需求。這個屬性簡單的來說就是用來模擬需要變化的屬性,從開始到結束數值之間的過渡。 1. 官方定義transition 屬性是一個簡寫屬性,用于設置四個過渡屬性: 2. 解釋transition 用來設置一個屬性狀態從開始到結束中間這個過程的變化。它是 transition-property、transition-duration、transition-timing-function、transition-delay、這四個屬性的縮寫。它們分別代表了:要使用過度動畫的屬性、過渡動畫的時間、過渡動畫的加速度函數即數值變化的快慢過程、過渡動畫的延遲時間。而我們通常使用過渡屬性完成元素過渡的這個過程一般使用 transition 。 3. 語法- .demo{
- transition: property duration timing-function delay;
- }
屬性值說明: 屬性值 | 描述 |
---|
transition-property | 規定設置過渡效果的 CSS 屬性的名稱。 | transition-duration | 規定完成過渡效果需要多少秒或毫秒。 | transition-timing-function | 規定速度效果的速度曲線。 | transition-delay | 定義過渡效果何時開始。 |
4. 兼容性IE | Edge | Firefox | Chrome | Safari | Opera | ios | android |
---|
9+ | 12+ | 28+ | 4+ | 6.1+ | 12.1+ | 7+ | 4.4 |
5. 實例1. 當鼠標移動到元素上,使用過渡屬性來讓元素的高度變化,從而實現一個過渡效果。 - <div class="demo"></div>
- .demo{
- width: px;
- height: px;
- background: #000;
- transition: height s;
- }
- .demo:hover{
- height: px;
- }
效果圖:  `hover` 之后高度變化效果圖當鼠標移動上去改變元素的寬高值,讓它們都實現過渡動畫。
寫法一: - .demo{
- width: px;
- height: px;
- background: #000;
- transition: height s,width s;
- }
- .demo:hover{
- width: px;
- height: px;
- }
寫法二: - .demo{
- width: px;
- height: px;
- background: #000;
- transition: all s;
- }
- .demo:hover{
- width: px;
- height: px;
- }
效果圖:  `hover` 寬高變化效果圖說明:這兩種方式都可以實現我們所要的過渡方式。不過這里推薦使用第一種方式。 改變上面過渡完成的速度。
- .demo{
- width: px;
- height: px;
- background: #000;
- transition: height s ease-in,width s ease-out;
- }
- .demo:hover{
- width: px;
- height: px;
- }
效果圖:  改變過渡完成的速度效果圖說明:在 transition 第三個值使用了動畫函數,改變了過渡過程中完成的速度,我們可以很清楚的看到他們的變化速度。 當鼠標移動上去 1s 之后開始動畫。
- .demo{
- width: px;
- height: px;
- background: #000;
- transition: height s ease-in s,width s ease-out s;
- }
- .demo:hover{
- width: px;
- height: px;
- }
效果圖:  時間設置效果圖說明:我們可以看到鼠標放到元素上 1s 之后開始動畫,而離開元素之后 1s 之后開始動畫。 6. Tips通過上面的實例可以知道 transition 的屬性值配置很靈活,但是我們要遵循一定的規律,這不單是增加了代碼的可讀性,也符合瀏覽器解析規則的規律。 hover 到按鈕上改變按鈕的位置和背景顏色。 - <button class="demo"></button>
- .demo{
- width: px;
- height: px;
- line-height: px;
- border-radius: px;
- background: #000;
- color:#fff;
- border:none;
- transition: background s,transform s;
- }
- .demo:hover{
- background: red;
- transform: translateY(-px);
- }
效果圖:  改變按鈕的位置和背景顏色效果圖7. 小結盡量不要使用 all 來驅動過渡的屬性,這會使得瀏覽器卡頓。 盡量不要使用 margin-left 這類的屬性,很可能會打亂頁面元素的位置。 推薦使用 transform 來改變元素的位置和大小。
|