transition

一、transition-property:
語法:

transition-property : none | all | [] [ ',']*

transition-property是用來指定當(dāng)元素其中一個屬性改變時執(zhí)行transition效果,其主要有以下幾個值:none(沒有屬性改變);all(所有屬性改變)這個也是其默認(rèn)值;indent(元素屬性名)。當(dāng)其值為none時,transition馬上停止執(zhí)行,當(dāng)指定為all時,則元素產(chǎn)生任何屬性值變化時都將執(zhí)行transition效果,ident是可以指定元素的某一個屬性值。其對應(yīng)的類型如下:
1、color: 通過紅、綠、藍和透明度組件變換(每個數(shù)值處理)如:background-color,border-color,color,outline-color等css屬性;
2、length: 真實的數(shù)字 如:word-spacing,width,vertical-align,top,right,bottom,left,padding,outline-width,margin,min-width,min-height,max-width,max-height,line-height,height,border-width,border-spacing,background-position等屬性;
3、percentage:真實的數(shù)字 如:word-spacing,width,vertical-align,top,right,bottom,left,min-width,min-height,max-width,max-height,line-height,height,background-position等屬性;
4、integer離散步驟(整個數(shù)字),在真實的數(shù)字空間,以及使用floor()轉(zhuǎn)換為整數(shù)時發(fā)生 如:outline-offset,z-index等屬性;
5、number真實的(浮點型)數(shù)值,如:zoom,opacity,font-weight,等屬性;
6、transform list:詳情請參閱:《CSS3 Transform
7、rectangle:通過x, y, width 和 height(轉(zhuǎn)為數(shù)值)變換,如:crop
8、visibility: 離散步驟,在0到1數(shù)字范圍之內(nèi),0表示“隱藏”,1表示完全“顯示”,如:visibility
9、shadow: 作用于color, x, y 和 blur(模糊)屬性,如:text-shadow
10、gradient: 通過每次停止時的位置和顏色進行變化。它們必須有相同的類型(放射狀的或是線性的)和相同的停止數(shù)值以便執(zhí)行動畫,如:background-image
11、paint server (SVG): 只支持下面的情況:從gradient到gradient以及color到color,然后工作與上面類似
12、space-separated list of above:如果列表有相同的項目數(shù)值,則列表每一項按照上面的規(guī)則進行變化,否則無變化
13、a shorthand property: 如果縮寫的所有部分都可以實現(xiàn)動畫,則會像所有單個屬性變化一樣變化
具體什么css屬性可以實現(xiàn)transition效果,在W3C官網(wǎng)中列出了所有可以實現(xiàn)transition效果的CSS屬性值以及值的類型,大家可以點這里了解詳情。這里需要提醒一點是,并不是什么屬性改變都為觸發(fā)transition動作效果,比如頁面的自適應(yīng)寬度,當(dāng)瀏覽器改變寬度時,并不會觸發(fā)transition的效果。但上述表格所示的屬性類型改變都會觸發(fā)一個transition動作效果。
二、transition-duration:
語法:

transition-duration :<time>[,<time>]*

transition-duration是用來指定元素 轉(zhuǎn)換過程的持續(xù)時間,取值:為數(shù)值,單位為s(秒)或者ms(毫秒),可以作用于所有元素,包括:before和:after偽元素。其默認(rèn)值是0,也就是變換時是即時的。
三、transition-timing-function:
語法:

transition-timing-function : ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(,,,) [, ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<nuber>,<nuber>,<nuber>,<nuber>)]*

取值:
transition-timing-function的值允許你根據(jù)時間的推進去改變屬性值的變換速率,transition-timing-function有6個可能值:
1、ease:(逐漸變慢)默認(rèn)值,ease函數(shù)等同于貝塞爾曲線(0.25, 0.1, 0.25, 1.0).
2、linear:(勻速),linear 函數(shù)等同于貝塞爾曲線(0.0, 0.0, 1.0, 1.0).
3、ease-in:(加速),ease-in 函數(shù)等同于貝塞爾曲線(0.42, 0, 1.0, 1.0).
4、ease-out:(減速),ease-out 函數(shù)等同于貝塞爾曲線(0, 0, 0.58, 1.0).
5、ease-in-out:(加速然后減速),ease-in-out 函數(shù)等同于貝塞爾曲線(0.42, 0, 0.58, 1.0)
6、cubic-bezier:(該值允許你去自定義一個時間曲線), 特定的cubic-bezier曲線。 (x1, y1, x2, y2)四個值特定于曲線上點P1和點P2。所有值需在[0, 1]區(qū)域內(nèi),否則無效。
其是cubic-bezier為通過貝賽爾曲線來計算“轉(zhuǎn)換”過程中的屬性值,如下曲線所示,通過改變P1(x1, y1)和P2(x2, y2)的坐標(biāo)可以改變整個過程的Output Percentage。初始默認(rèn)值為default.

其他幾個屬性的示意圖:


四、transition-delay:
語法:

transition-delay :<time>[,<time>]*

transition-delay是用來指定一個動畫開始執(zhí)行的時間,也就是說當(dāng)改變元素屬性值后多長時間開始執(zhí)行transition效果,其取值:為數(shù)值,單位為s(秒)或者ms(毫秒),其使用和transition-duration極其相似,也可以作用于所有元素,包括:before和:after偽元素。 默認(rèn)大小是"0",也就是變換立即執(zhí)行,沒有延遲。
有時我們不只改變一個css效果的屬性,而是想改變兩個或者多個css屬性的transition效果,那么我們只要把幾個transition的聲明串在一起,用逗號(“,”)隔開,然后各自可以有各自不同的延續(xù)時間和其時間的速率變換方式。但需要值得注意的一點:transition-delay與transition-duration的值都是時間,所以要區(qū)分它們在連寫中的位置,一般瀏覽器會根據(jù)先后順序決定,第一個可以解析為時間的怭值為transition-duration第二個為transition-delay。如:

a{-moz-transition:background0.5s ease-in,color0.3s ease-out;-webkit-transition:background0.5s ease-in,color0.3s ease-out;-o-transition:background0.5s ease-in,color0.3s ease-out;transition:background0.5s ease-in,color0.3s ease-out;}

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

a{-moz-transition:all0.5s ease-in;-webkit-transition:all0.5s ease-in;-o-transition:all0.5s ease-in;transition:all0.5s ease-in;}

綜合上述我們可以給**transition一個速記法:transition: **如下圖所示:


相對應(yīng)的一個示例代碼:

p{-webkit-transition:all .5s ease-in-out1s;-o-transition:all .5s ease-in-out1s;-moz-transition:all .5s ease-in-out1s;transition:all .5s ease-in-out1s;}

瀏覽器的兼容性:


因為transition最早是有由webkit內(nèi)核瀏覽器提出來的,mozilla和opera都是最近版本才支持這個屬性,而我們的大眾型瀏覽器IE全家都是不支持,另外由于各大現(xiàn)代瀏覽器Firefox,Safari,Chrome,Opera都還不支持W3C的標(biāo)準(zhǔn)寫法,所以在應(yīng)用transition時我們有必要加上各自的前綴,最好在放上我們W3C的標(biāo)準(zhǔn)寫法,這樣標(biāo)準(zhǔn)的會覆蓋前面的寫法,只要瀏覽器支持我們的transition屬性,那么這種效果就會自動加上去:

//Mozilla內(nèi)核-moz-transition : [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>[, [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>]]*    //Webkit內(nèi)核  -webkit-transition : [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>[, [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>]]*    //Opera  -o-transition : [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>[, [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>]]*    //W3C 標(biāo)準(zhǔn)  transition : [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>[, [<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>]]*

通過上面,我想大家對CSS3的Transition屬性的使用有一定的概念存在了,我們通過實踐來鞏固前面的理論知識,也通過實踐來加強transition的記憶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • W3C標(biāo)準(zhǔn)中對css3的transition這是樣描述的:“css的transition允許css的屬性值在一定的...
    青春前行閱讀 1,427評論 0 5
  • 選擇qi:是表達式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,327評論 0 11
  • 定義 W3C標(biāo)準(zhǔn)中對css3的transition這是樣描述的:“css的transition允許css的屬性值在...
    Gopal閱讀 421評論 0 0
  • 上一篇介紹了CSS3里transform變形屬性,本篇介紹另一個人氣動畫屬性transition。transiti...
    張歆琳閱讀 25,038評論 1 31
  • 選擇qi:是表達式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,788評論 0 2