-webkit-animation: name duration timing_function delay iteration_count direction [, ... ];
雖然 Animation 已經建立好了,但仍需要建立 Keyframe,才算是一個完整的 Animation。
接著就是要替 Animation 建立 Keyframe(s) 了。
Syntax
keyframes-rule: '@-webkit-keyframes' [ IDENT | STRING ] '{}';
keyframes-blocks: [ keyframe-selectors block ]* ;
keyframe-selectors: [ 'from' | 'to' | PERCENTAGE ] [ ',' [ 'from' | 'to' | PERCENTAGE ] ]*;
範例
<style>
.aniClass1 {}
@-webkit-keyframes test_ani1 {}
100% {}
}
</style>
<div style="width: 200px;border: 1px solid #000000"
onMouseOver="className='aniClass1';">
Mouse over to trigger the animation.
</div>
結果
當 Animation 在執行時,將有以下三種 Event,好讓 JavaScript 能夠得知 Animation
的執行情形。
範例
<style>
.aniClass2 {}
@-webkit-keyframes test_ani2 {}
100% {}
}
</style>
<div id="ani_box" style="border: 1px solid #000000"
onMouseOver="className='aniClass2';">
Mouse over to trigger the animation.
webkitAnimationEnd event will be triggered at the end.
</div>
<script>
function endOfAni(event) {}
ani_box.addEventListener('webkitAnimationEnd', endOfAni);
</script>
結果
當 Mouse over 將會開始動畫,而動畫完成時將會 alert(“end of animation”)。
目前的 JavaScript Framework 皆是以 JavaScript 來設計並實作所有 Animation library,但問題是以 JavaScript 實作的數學運算都會需要以下的幾個步驟:
當所有 Animation 所需的數學運算都得經過上面從 JavaScript Space 轉換到 Native Space,運算完結果後再轉換回 JavaScript Space 時,將會大大地浪費許多的時間在轉換上。
傳統架構如下圖:
| JavaScript Application |
| JavaScript Animation Library (witten in JavaScript) |
| JavaScript Engine |
| Native Math functions |
由於 Animation 的運算皆是由 JavaScript 所寫,當然也得由 JavaScript Engine (VM) 來運算,速度上也自然不理想。
(PS. Just In Time Compiler (JIT) 技術也常用在減少這種不必要的轉換 overhead 上。)
但是,CSS Animation 的想法則是更進一步,何不干脆直接提供 Native Animation Library ,並藉由 CSS 設計與 JavaScript 做結合,如此一來除了事件相關的不必要轉換都可以省略。
CSS Animation 的架構如下:
| JavaScript Application |
| JavaScript Engine |
| Native Animation Library |
如此一來,在 Animation 過程中所需要的數學運算都會是 Native operation,得到的加速效果可是 JavaScript Space 的好幾倍!
其實 Apple 提出的這個架構,主要還是因為 Mac OS 上早已有了 Native Animation Library (Core Animation & Quartz),對 Apple 來說根本是再好不過了。
然而在其它平台上就沒這麼幸運了,缺乏統一架構的結果反而導致了彼此不相容且疊床架屋的問題。
PS. Mac OS 能在 GUI 系統上領先,統一架構是很重要的原因。
即使 Animation 得到大幅度的加速,但還是有不少的問題:
後記:
CSS 3D Transforms Module Level 3 (W3C Proposal)
相關文章:
Tags: Animation, Apple, CSS, CSS3, Flash, HTML5, Tutorial, Webkit
[...] 2010/04/21/css-animation-20090326/ [...]
不是喔!
是最後修改 HTML/CSS 後「馬上更新」,別切回預覧就可以了。
這是 wordpress 文章編輯器的問題喔!
也就是說,你也可以「使用其它方法上傳你的文章」,例如 email..
或是試試看其它的 editor plugin。
剛剛在找另一樣東西,沒想到竟然看到這個,
extend/plugins/raw-html/
也許可以試看看囉~