天天看點

CSS3:Transition屬性詳解

transition屬性主要是用來對某個css屬性的變化過程進行控制,官方的介紹是”css

transitions allow property changes in css values to occur smoothly over a

specified duration.“。而我個人則簡單地了解為”在某個時間段内,平滑地改變某個css屬性。“。

transition又包含了四個子屬性,分别為property、duration、timing-function、delay。下面來一一介紹,在最後會給出一個簡單的執行個體和使用方法說明。

property針對了目前的某個css屬性進行設定。比如我要一個背景色時,則設定property值為background。

duration針對了過渡效果的持續時間。

timing-function算是transition屬性中最為複雜的一個了。它針對了過渡效果的,有多種特效展示。這裡得涉及到一個學術性的話題:貝茲曲線。說實話,我也沒搞的太明白,但w3c給出了一張曲線圖,一看就明白了(後附圖)。

介紹下預留的幾個特效:

ee: cubic-bezier(0.25, 0.1, 0.25, 1.0)

linear:

cubic-bezier(0.0, 0.0, 1.0, 1.0)

ease-in: cubic-bezier(0.42, 0, 1.0,

1.0)

ease-out: cubic-bezier(0, 0, 0.58, 1.0)

ease-in-out:

cubic-bezier(0.42, 0, 0.58, 1.0)

cubic-bezier(x1, y1, x2, y2)

為自定義,x1,x2,y1,y2的值範圍在[0, 1]

其中的cubic-bezier即為貝茲曲線中的繪制方法。先來看圖:

CSS3:Transition屬性詳解

圖上有四點,p0-3,其中p0、p3是預設的點,對應了[0,0],

[1,1]。而剩下的p1、p2兩點則是我們通過cubic-bezier()自定義的。

參考閱讀:

w3c: ://www.w3.org/tr/-transitions/#transition-timing-function_tag

貝茲曲線:http://zh.wikedia.org/wiki/%e8%b2%9d%e8%8c%b2%e6%9b%b2%e7%b7%9a

duration針對了過渡效果的延遲執行時間。

1).

過渡單個屬性:

 transition-property:opacity;

transition-duration:2s;

transition-timing-function:ease-in;

transition-delay:0;

2). 過渡多個屬性:

[1]. 上下一一對應型:

 transition-property:opacity

left;

transition-duration:2s,

4s;

此時:opacity過渡時間為2s,left過渡時間為4s。

[2]. 循環對應型:

 transition-property:opacity left width

height;

此時:opacity和width過渡時間為2s,left和height過渡時間為4s。

3). transition簡寫模式:

順序為:transition-property transition-duration

transition-timing-function

transition-delay 

  /*單個屬性:*/

-moz-transition:background

0.5s ease-out 0s;

/*多個屬性:*/

-moz-transition:background, 0.5s ease-out 0s,

color 0.4 ease-out 0s;

代碼: 

 <a

href="http://www.ihiro.org/" tar="_blank">ihiro.org</a>

css代碼: 

  <a href="http://www.ihiro.org/"

target="_blank">ihiro.org</a>

a { display:block; width:160px;

height:30px; line-height:30px; text-align:center; padding:10px;

background:#33589f; color:#fff; text-decoration:none;

text-transform:uppercase;

/*隻有當滑鼠移出後才處理*/

    -moz-transition:background 0.2s linear

0s;

}

a:hover { background:#263c7b;

color:#f60;

    text-shadow:2px 2px 10px

#f00;

    /*

隻有當滑鼠移入時才處理

注:若a:hover中不寫transition,則會繼承a中的transition */

/*

    1. 單個屬性

-moz-transition:background 0.5s ease-out 0s;

    2.

多個屬性:

       -moz-transition:background, 0.5s

ease-out 0s, color 0.4 ease-out 0s;

*/

    -moz-transition:background 0.5s ease-out, color 0.4s

ease-out, text-shadow 0.3s linear;