transition 最常使用在滑鼠移到物件上時 (hover) 觸發的變化。
▼比如說如下例子,當滑鼠移上去時人物會「立即」以Y軸為軸心旋轉45度。
▼如果我們加上過場屬性,它就會以漸進式的動畫呈現。
這裡有一個要注意的是,在沒有 :hover 的選擇器也要設定 transition-duration 這樣滑鼠移開時,才不會瞬間跳回滑鼠還未滑上去的狀態,看起來有點突兀。(這一段如果看不懂,看完整篇再回來看就會懂)
.rotatey45ani{ transition:200ms; } .rotatey45ani:hover{ transform:perspective(500px) rotateY(45deg); transition:1s; }
transition-property 套用過場的屬性
用來指定有哪些屬性要套用過場效果,初始值是 all 也就是所有屬性都套用。
也可以一一列出要過場的屬性 eg:
transition- property: color, border, transform, opacity, width, padding; transition-duration:1s;
或是先寫all 再列出特別設定秒數的屬性,並提供相對應秒數
transition-property: all, color, transform; transition-duration:1s, 2s, 3s;
以上 transition-duration 是轉場的效果持續時間(後面會提到),除了指定 color 屬性轉場時間持續2秒,以及 transform 屬性轉場時間持續3秒以外,其他所有的屬性都持續轉場時間1秒。
如果某個屬性不想有轉場效果,要直接跳到指定屬性變化,就把持續時間設為 0s 即可。
transition-property:none
複寫掉所有轉場效果
none 只能當作唯一值,不能當作部分值。
轉場結束後會觸發 transitionend 事件
transition-duration 過場持續時間
初始值 0s ,一定要是正值。
如果屬性值大於週期值,瀏覽器會重複宣告週期值。
eg:
transition-property:color, border, transform, opacity, width, padding; transform-duration: 100ms, 200ms;
以上則基數屬性使用第一個週期值,偶數屬性使用第二個週期值
transition-timing-function 過場時脈
初始值是 ease
linear 是線性,沒有緩衝、 ease-in 是先慢後快、ease-out 是先快後慢、ease-in-out 就是緩出緩進。
其他還有 step-end, step-star, step(n, end), step(n, out),這幾個不常用,先用以下草圖表示:
transition-delay 延遲多少時間才開始過場動作
初始值: 0s,可以是負值,如果 transition-delay 值小於 transition-duration 則會從一開始就轉場而且是從中段開始。
transition-delay:0s 轉場立即開始。
transition-property: color, border, transform, opacity; transition-duration:200ms; transition-timing-function:linear; transition-delay:0s, 200ms;
個別設定延遲時間
對一連串的屬性設定 transform-delay 和transition-duration 一樣,如果屬性個數多於transition-delay 個數則會重複套用 transition-delay;如果屬性數較少,則多出來的transition-delay 會被忽略。
transition 縮寫
我想我們最需要的是這個,一個一個宣告未免也太長篇大論。
transition: 屬性 持續 時脈 延遲;
以上用空格隔開即可
eg:
transition : 200ms 50ms ease-in;
如果省略屬性 (transition-property) 則預設值為 all 如果只有一個時間值 則會視為是 transition-duration 如果有兩個時間值,則第一個永遠是 transition-duration 第二個是 transition-delay,第三個值時脈(transition-timing-function) 如果沒宣告則預設值是 ease。
transition 唯一必須的值是 transition-duration ,也就是轉場持續時間,我們也常常只設定這個值。