1. 程式人生 > >CSS3中和動畫有關的屬性transform、transition 和 animation

CSS3中和動畫有關的屬性transform、transition 和 animation

  

  transition-delay是用來指定一個動畫開始執行的時間,也就是說當改變元素屬性值後多長時間開始執行transition效果,取 值:<time>為數值,單位為s(秒),它的使用和transition-duration極其相似,也可以作用於所有元素,包 括:before和:after偽元素。 預設大小是”0″,也就是變換立即執行,沒有延遲。

  

有時我們不只改變一個CSS效果的屬性,而是想改變兩個或者多個CSS屬性的transition效果,那麼我們只要把幾個transition的 宣告串 在一起,用逗號(“,”)隔開,然後各自可以有各自不同的延續時間和其時間的速率變換方式。但需要值得注意的一點:transition-delay與 transition-duration的值都是時間,所以要區分它們在連寫中的位置,一般瀏覽器會根據先後順序決定,第一個可以解析為時間的怭值為 transition-duration第二個為transition-delay。如:

  

   a {transition: background 0.5s ease-in,color 0.3s ease-out}

  

如果你想給元素執行所有transition效果的屬性,那麼我們還可以利用all屬性值來操作,此時他們共享同樣的延續時間以及速率變換方式,如:

  

a{transition: all 0.5s ease-in}

  

}

     

 animation 

  

顧名思義為動畫的意思。Animation應用在頁面DOM上 使其產生動畫的效果。在開始介紹Animation之前我們有必要先來了解一個特殊的東西,那就是"Keyframes",我們把他叫做“關鍵幀”,玩過flash的朋友可能對這個東西並不會陌生。

  

一個官網的示例:

  
@-webkit-keyframes 'wobble' {     0% {        margin-left: 100px;        background: green;     }     40% {        margin-left: 150px;        background: orange;     }     60% {        margin-left: 75px;        background: blue;     }     100% {        margin-left: 100px;        background: red;     }  }
  
這裡我們定義了一個叫“wobble”的動畫,名字任意取。分幾個階段0% 40% 60% 100% 來過渡。
  

keyframes定義好了以後,就可以去呼叫定義好的動畫“wobble”了。

  

下面我們來看看怎麼給一個元素呼叫animation屬性

  
  .demo1 {     width: 50px;     height: 50px;     margin-left: 100px;     background: blue;     -webkit-animation-name:'wobble';/*動畫屬性名,也就是我們前面keyframes定義的動畫名*/     -webkit-animation-duration: 10s;/*動畫持續時間*/     -webkit-animation-timing-function: ease-in-out; /*動畫頻率,和transition-timing-function是一樣的*/     -webkit-animation-delay: 2s;/*動畫延遲時間*/     -webkit-animation-iteration-count: 10;/*定義迴圈資料,infinite為無限次*/     -webkit-animation-direction: alternate;/*定義動畫方式*/  }
     
animation-name:
  
animation-name:是用來定義一個動畫的名稱,為Keyframes中的名稱,否則不會有動畫效果。none為預設值,當值為none時,將沒有任何動畫效果。另外我們這個屬性跟前面所講的transition一樣,我們可以同時附幾個animation給一個元素,我們只需要用逗號“,”隔開。
     

CSS3的animation類似於transition屬性,他們都是隨著時間改變元素的屬性值。他們主要區別是transition需要觸發一 個事件(hover事件或click事件等)才會隨時間改變其css屬性;而animation在不需要觸發任何事件的情況下也可以顯式的隨著時間變化來 改變元素css的屬性值,從而達到一種動畫的效果。這樣我們就可以直接在一個元素中呼叫animation的動畫屬性,基於這一點,css3的 animation就需要明確的動畫屬性值,這也就是回到我們上面所說的,我們需要keyframes來定義不同時間的css屬性值,達到元素在不同時間 段變化的效果。