CSS3的出現最引人注意的地方莫過(guò)于css動(dòng)畫(huà)(CSS Animation)了,而css3過(guò)渡(CSS Transition)讓動(dòng)畫(huà)變的生動(dòng)更逼真。今天就帶大家一起來(lái)認識一下CSS Transition。
有了它,我們從一種效果轉換到另一種效果而無(wú)需javascript或flash,我們只需一段CSS代碼而已。
| 屬性 | 瀏覽器 | ||||
|---|---|---|---|---|---|
| transition | ![]() | ![]() | ![]() | ![]() | ![]() |
Internet Explorer不支持過(guò)渡屬性。
Firefox4需要前綴-moz-。
Chrome和Safari需要前綴-webkit-。
Opera需要前綴-o-。
CSS3的過(guò)渡效果,讓一個(gè)元素從一種效果轉換到另一種效果。
要做到這一點(diǎn),你必須指定兩件事:
舉例說(shuō)明:
div { transition: width 2s; -moz-transition: width 2s; /* Firefox 4 */ -webkit-transition: width 2s; /* Safari and Chrome */ -o-transition: width 2s; /* Opera */ }
注意:如果未指定動(dòng)畫(huà)延遲時(shí)間,過(guò)渡將沒(méi)有任何效果,因為默認值是0。
鼠標放上去的時(shí)候,變換開(kāi)始:
div:hover { width:300px; }
css3動(dòng)畫(huà)一般通過(guò)鼠標事件或者說(shuō)狀態(tài)定義動(dòng)畫(huà),通常我們可以用CSS中偽類(lèi)和js中的鼠標事件來(lái)定義。
| 動(dòng)態(tài)偽類(lèi) | 起作用的元素 | 描述 |
| :link | 只有鏈接 | 未訪(fǎng)問(wèn)的鏈接 |
| :visited | 只有鏈接 | 訪(fǎng)問(wèn)過(guò)的鏈接 |
| :hover | 所有元素 | 鼠標經(jīng)過(guò)元素 |
| :active | 所有元素 | 鼠標點(diǎn)擊元素 |
| :focus | 所有可被選中的元素 | 元素被選中 |
js的事件也可以,比如click,focus,mousemove,mouseover,mouseout等等
css3動(dòng)畫(huà)通過(guò)transition屬性和其他css屬性(顏色,寬高,變形,位置等等)配合來(lái)實(shí)現。
transition的語(yǔ)法:
transition : [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]*
當然這是簡(jiǎn)寫(xiě),我們也可以完整的寫(xiě):
transition-property : none | all | [ <IDENT> ] [ ',' <IDENT> ]*;
transition-duration : <time> [, <time>]*
transition-timing-function : ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>) [, ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>)]*
transition-delay : <time> [, <time>]*
transition-property:要變化的屬性,比如元素變寬則是width,文字顏色要變色這是W3C給出了一個(gè)可變換屬性的列表:
| CSS屬性 | 改變的對象 |
| background-color | 色彩 |
| background-image | 只是漸變 |
| background-position | 百分比,長(cháng)度 |
| border-bottom-color | 色彩 |
| border-bottom-width | 長(cháng)度 |
| border-color | 色彩 |
| border-left-color | 色彩 |
| border-left-width | 長(cháng)度 |
| border-right-color | 色彩 |
| border-right-width | 長(cháng)度 |
| border-spacing | 長(cháng)度 |
| border-top-color | 色彩 |
| border-top-width | 長(cháng)度 |
| border-width | 長(cháng)度 |
| bottom | 百分比,長(cháng)度 |
| color | 色彩 |
| crop | 百分比 |
| font-size | 百分比,長(cháng)度 |
| font-weight | 數字 |
| grid-* | 數量 |
| height | 百分比,長(cháng)度 |
| left | 百分比,長(cháng)度 |
| letter-spacing | 長(cháng)度 |
| line-height | 百分比,長(cháng)度,數字 |
| margin-bottom | 長(cháng)度 |
| margin-left | 長(cháng)度 |
| margin-right | 長(cháng)度 |
| margin-top | 長(cháng)度 |
| max-height | 百分比,長(cháng)度 |
| max-width | 百分比,長(cháng)度 |
| min-height | 百分比,長(cháng)度 |
| min-width | 百分比,長(cháng)度 |
| opacity | 數字 |
| outline-color | 色彩 |
| outline-offset | 整數 |
| outline-width | 長(cháng)度 |
| padding-bottom | 長(cháng)度 |
| padding-left | 長(cháng)度 |
| padding-right | 長(cháng)度 |
| padding-top | 長(cháng)度 |
| right | 百分比,長(cháng)度 |
| text-indent | 百分比,長(cháng)度 |
| text-shadow | 陰影 |
| top | 百分比,長(cháng)度 |
| vertical-align | 百分比,長(cháng)度,關(guān)鍵詞 |
| visibility | 可見(jiàn)性 |
| width | 百分比,長(cháng)度 |
| word-spacing | 百分比,長(cháng)度 |
| z-index | 正整數 |
| zoom | 數字 |
幾乎所有的有色彩、大小或位置等組件的CSS屬性,包括許多新添加的CSS3屬性, 都可以應用變換。一個(gè)值得注意的例外是box-shadow,不過(guò)部分瀏覽器還是對box-shadow添加了支持。
該取值還有個(gè)強大的“all”取值,表示上表所有屬性;
除了以上屬性外,當然還有css3中大放異彩的css3變形,比如放大縮小,旋轉斜切,漸變等等。
transition-duration :動(dòng)畫(huà)執行的時(shí)間,以秒為單位,比如0.1秒可以寫(xiě)成”0.1s”或者”.1s”,注意后面有個(gè)“s”單位。
transition-timing-function :動(dòng)畫(huà)執行的計算方式,這里時(shí)間函數是令人崩潰的貝塞爾曲線(xiàn),幸好css3提過(guò)了幾個(gè)取值:
ease:逐漸慢下來(lái),函數等同于貝塞爾曲線(xiàn)(0.25, 0.1, 0.25, 1.0).
linear:線(xiàn)性過(guò)度,函數等同于貝塞爾曲線(xiàn)(0.0, 0.0, 1.0, 1.0).
ease-in:由慢到快,函數等同于貝塞爾曲線(xiàn)(0.42, 0, 1.0, 1.0).
ease-out:由快到慢, 函數等同于貝塞爾曲線(xiàn)(0, 0, 0.58, 1.0).
ease-in-out:由慢到快在到慢, 函數等同于貝塞爾曲線(xiàn)(0.42, 0, 0.58, 1.0)
cubic-bezier:特定的cubic-bezier曲線(xiàn)。 (x1, y1, x2, y2)四個(gè)值特定于曲線(xiàn)上點(diǎn)P1和點(diǎn)P2。所有值需在[0, 1]區域內,否則無(wú)效。
transition-delay:在動(dòng)作和變換開(kāi)始之間等待多久,通常用秒來(lái)表示(比如, .1s)。如果你不想延遲,該值可省略。
經(jīng)常會(huì )碰到同一元素會(huì )有多個(gè)動(dòng)畫(huà)同時(shí)執行的時(shí)侯,比如文字顏色和背景同時(shí)變化:
-webkit-transition: color .25s linear , background-color 1s linear;
這時(shí)候transition-property建議取值為“all”;
典型的應用舉例:
放大縮?。?/strong>
#scale { -webkit-transition: all .3s ease-in-out; }
#scale:hover { -webkit-transform: scale(1.5); }
旋轉:
#rotate { -webkit-transition: all 1s ease-in-out;}
#rotate:hover {-webkit-transform: rotate(720deg);}
聯(lián)系客服