1. 程式人生 > >CSS3 過渡屬性

CSS3 過渡屬性

web 前端 狀況 顏色 能夠 隱式 定義函數 其中 ive

CSS3 過渡
多年來, Web前端開發人員一直在尋求通過HTML和CSS實現一些動畫交互效果, 而不再使用JavaScript 或Flash。 現在他們的願望實現了。 CSS3除了給我們帶來前面介紹的一些 特殊功能模塊之外, 還為Web設計師添加了 一些動畫功能模塊。 可以通過:hover、:focus、:active、:checked 或者JavaScript 觸發一個元素,這樣,外觀變化會顯得更細膩,而不會讓人感覺“ 一觸即發”。例如懸浮修改鏈接色,在 CSS2.1中鼠標懸浮時, 立刻從一個顏色變成另一個顏色。 而在CSS3 中使用過渡功能, 鼠標懸浮時, 顏色在一定的時間內, 從一個顏色過渡到另一個 顏色,給用戶更好、 更細膩的體驗。
CSS3的過渡功能像是一種黃油, 通過一些CSS的簡單動作觸發樣式平滑過渡。W3C標準中描述的transition功能很簡單: CSS3的transition允許CSS的屬性值在一定的時間區間內平滑地過渡。這種效果可以在鼠標單擊、獲得焦點、被點擊或對元素任何改變中觸發,並平滑地以動畫效果改變CSS的屬性值。
以往Web中的動畫都是依賴於JavaScript和Flash實現,但原生CSS過渡在客戶端上需要處理的資源少得多,從而顯得更加平滑。 CSS3過渡與元素上的常規樣式一起聲明。只要目標屬性更改,瀏覽器 就會應用過渡。除了使用JavaScript 觸發動作外,在CSS中也可以通過一些偽類來觸發, 如 :hover、:focus、:active、:target 和:checked等。 這很重要:無須在JavaScript中編寫動畫,只需要更改一個屬性值並依賴瀏覽器來執行所有重要工作。 以下 是使用CSS創建簡單過渡的步驟:
http:/ /www.iis7.com/b/wzjk/
1). 在默認樣式中聲明元素的初始狀態樣式。
2). 聲明過渡元素最終狀態樣式, 比如懸浮狀態。
3). 在默認樣式中通過添加過渡函數, 添加一些不同的樣式。
transition屬性是一個復合屬性,出於簡潔性和便於維護考慮,過渡語法通常以簡化的形式表達。
transition屬性主要包含四個屬性值:
·transition-property: 指定過渡或動態模擬的CSS屬性。
·transition-duration: 指定完成過渡所需的時間。
·transition-timing-function: 指定過渡函數。
·transition-delay: 指定過渡開始出現的延遲時間。
指定過渡函數 transition-timing-function,transition- timing- function屬性指定某種指代過渡“ 緩動函數”的屬性。此屬性可指定瀏覽器的過渡速度, 以及過渡期間的操作進展情況, 可以將某個值指定為預定義函數、階梯函數或者三次貝塞爾曲線。
到目前為止,看到的ease、linear、ease-in、ease-out和ease-in-out等曲線函數非常一般,用於過渡動畫中也不是十分精確。而現在制作一些動畫需求越來越精確,需要定義一些更精確的函數。
CSS3 的transition中, 定義三次貝塞爾曲線的語法如右所示: cubic-bezier( P0, P1, P2, P3)
一個三次貝塞爾曲線由四個點控制曲線形狀。每個點由水平和垂直兩個值來確定, 也就是常說的由X和Y值確定。
這些點的值是小數或者百分比, 不過很少看到使用百分比來設置一個三次貝塞爾曲線點。而且它們的值都是一個0~1的小數。 不過有一點需要特別註意, 三次貝塞爾曲線中的P0和P兩個點是無法設置的, 因為它們總是存在HTML中, 也就是說它們總會是( 0,0)和( 1,1)。
註意,三次貝塞爾曲線中的每個點值只允許0~1的值。
step()函數,step()函數用於把整個操作領域劃成同樣大小的間隔, 每個間隔都是都是相等的。 該函數還指定發生在開始或結束的時間間隔是否另外輸出百分比(換句話說,如果輸出的百分比為0%表示輸入變化的初始點)。
step() 函數非常獨特,它允許在固定的間隔播放動畫。例如, 在 step() 函數圖上可以看出, 動畫屬性比在0%處開始,漲到50%,動畫結束時, 屬性值達到100%( 也就是結束狀態屬性)。 並且在各個step() 函數中每個步驟在過渡動畫中不夠平滑
step(< integer>[,[ start| end]]?) step() 函數主要包括兩個參數。
·第一個參數是一個數值< integer>, 主要用來指定step()函數間隔的數量, 此值必須是一個大於0的正整數。
·第二個參數是可選的, 是start或end, 如果第二個參數忽略, 則默認為end值。 其中step( 1, start)相當於step- start; step( 1, end)相當於step- end。
偽元素觸發
使用transition 時, 常用鼠標懸浮(: hover) 來觸發過渡。
為說明這與觸發過渡的實際事件毫無關聯, 也為強調狀態變化的重要性, 下面提供了 一些觸發過渡的其他方法。

  1. 使用:active “:active”偽類表示用戶單擊某個元素並按住鼠標按鈕時顯示的狀態。
  2. 使用:focus“:focus”偽類通常會在元素接收鍵盤焦點時出現。文本輸入框元素上將發生過渡, 且該元素得到焦點時會執行文本輸入框元素寬度和背景色過渡。
    此處作為一個邊點, 當對“: hover”偽類應用過渡時, 最好將“: focus”添加到選擇器堆棧。 這樣將能夠豐富鼠標用戶和鍵盤用戶的體驗。
  3. 使用:checked “:checked”偽類在發生以下狀況時觸發過渡。 文本框選中時,
  4. 媒體查詢觸發 觸發元素狀態變化的另一種方法是使用CSS3媒體查詢( Media Queries)。
  5. JavaScript 觸發 如果可以基於CSS的狀態更改觸發過渡, 自然可以通過 JavaScript做到這一點。
    隱式過渡 “隱式過渡”指的是當一個屬性改變時引起另一個屬性到一個屬性的過渡。

CSS3 過渡屬性