1. 程式人生 > >css 之過渡效果

css 之過渡效果

之前寫css的效果,都是使用js 來完成的,但是寫js比較耗費時間,有時候邏輯不對,還出不來效果,所以也比較煩;所以一些簡單的效果,就使用css 來完成會比較好一些,不必耗費太多的精力;

但是寫css 時,也需要明白到底為什麼會這樣變化,這樣我們才能對寫出來的程式碼有一個比較好的理解。很遺憾,先前寫程式碼的時候,雖然也使用了css,但是為什麼會這樣寫,完全是蒙的,因為看到別人這樣寫過,所以也這樣寫,一直沒有好好的研究一下,如果需求稍微換一下,即使是很微小的變化,就不知道怎麼寫了。還停留在一個鸚鵡學舌的階段;這幾天看了一個視屏,大概瞭解了一些關於css 過渡效果的規則,也自己總結一下:

 1
<!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>Document</title> 8 <
style> 9 .nei { 10 width: 200px; 11 height: 100px; 12 background: red; 13 margin: 200px auto; 14 transition-property: width; 15 transition-duration: 3s; 16 } 17 .nei:hover { 18 width: 400px; 19 }
20 </style> 21 </head> 22 <body> 23 <div class="abox"> 24 <div class="nei"></div> 25 </div> 26 </body> 27 </html>

執行結果:滑鼠放到div.nei 上,這寬度自動緩慢變為400px;這就達到了使用js達到的效果,只用3 行css程式碼就搞定了

 

在 js中,可以一次性使用json 的格式設定多個屬性的效果,在css 中,也是可以的,下面同時設定高寬和背景的效果如下;

 1   .nei {
 2             width: 200px;
 3             height: 100px;
 4             background: red;
 5             margin: 200px auto;
 6             transition-property: width, height, background-color;
 7             transition-duration: 2s, 2s, 2s;
 8         }
 9         .nei:hover {
10             width: 400px;
11             height: 200px;
12             background-color: green;
13         }

執行結果:可以同時設定多個屬性的變化值

 

上面提到的過渡效果的屬性,有兩個:一個是transition-porperty,一個是transition-duration,分別代表屬性的名稱和屬性的過渡時間;

關於過渡效果,還有另外兩個屬性,一個是transion-timing-fuction,一個是transition-delay,分別代表屬性的過渡效果和延時時間:

所謂過渡效果,指的是 當過渡發生時,從最初始的時候到最終的時候,經歷的過程;一般來說有 5 種效果:分別是 linear,easy,easy-in,easy-out,easy-in-out

大部分情況下我們只用到linear,因為預設就是這個值

下面增加了delay屬性和timing-function屬性:

 1  .nei {
 2             width: 200px;
 3             height: 100px;
 4             background: red;
 5             margin: 200px auto;
 6             transition-property: width, height, background-color;
 7             transition-duration: 2s, 2s, 2s;
 8             transition-delay: 2s;
 9             transition-timing-function: linear;
10         }
11         .nei:hover {
12             width: 400px;
13             height: 200px;
14             background-color: green;
15         }

效果:延遲2s 執行過渡

 

 

對於過渡,我們有一種簡寫模式:執行結果是一樣的

 1 .nei {
 2             width: 200px;
 3             height: 100px;
 4             background: red;
 5             margin: 200px auto;
 6             transition: width 2s linear 2s, height 2s linear 2s, background-color 2s linear 2s
 7         }
 8         .nei:hover {
 9             width: 400px;
10             height: 200px;
11             background-color: green;
12         }

另外:當所有的屬性變化過程相同的時候,可以簡寫如下:

 1  .nei {
 2             width: 200px;
 3             height: 100px;
 4             background: red;
 5             margin: 200px auto;
 6             /* 簡寫如下 */
 7             transition: all 2s;
 8         }
 9         .nei:hover {
10             width: 400px;
11             height: 200px;
12             background-color: green;
13         }

 

這裡 all 代表所有屬性,2s 表示過渡時間,而後兩個引數,則是可以省略不寫的

 

小結:一個過渡,只要滿足3三條件,就可以實現過渡效果:1.是有過渡的屬性,2是過渡的屬性有變化,3是有過渡的時間

只要滿足這三個要素,就可以實現過渡效果