使用 animation 動畫屬性只需要設定好 animation 的屬性以及關鍵影格 keyframes 就可以很輕鬆的讓動畫跑起來,但是各家瀏覽器的支援程度還不一致,所以在 CSS 的語法中,會需要加入特別為瀏覽器所寫的字首(prefix),這個部分在範例中會看到。
基本設定一:CSS3 animation 動畫屬性語法
animation: name duration timing-function delay iteration-count direction;
CSS3 animation 共有六個基本屬性可以使用,分別是 name、duration、timing-function、delay、iteration-count、direction 這六個,用來控制動畫元素的各種動畫效果,一個 animation 就可以把這六個屬性都寫完,也可以分別設計各個屬性的值,這六個屬性效果如表所示。CSS3 animation 動畫屬性清單
屬性 | 說明 |
animation-name | 定義動畫的關鍵影格 @keyframes 名稱。 |
animation-duration | 定義動畫執行一次的時間,可以秒或毫秒為單位。 |
animation-timing-function | 定義動畫執行的速度曲線,例如線性 linear 或低速開始。 |
animation-delay | 定義動畫準備完成至開始動作的時間,可以秒為單位,若為 0s 表示不延遲。 |
animation-iteration-count | 定義動畫重覆執行次數,若要無限次執行可使用 infinite。 |
animation-direction | 定義動畫執行完一次是否需要反向執行,若要反向執行可使用 alternate。 |
關鍵影格 keyframes 的設定可以說是 CSS3 animation 動畫效果的關鍵,若是缺少了關鍵影格的設定,動畫就跑不起來,要設定關鍵影格有兩個重點,分別是從哪邊開始跑(from)以及跑到哪裡結束(to),關鍵影格是透過 percentage 來判斷動畫啟動的時間點以及結束的時間點,0% 代表的是動畫起點,100% 則代表動畫結束點,使用 from 與 to 來設定,這部分在範例中也都會看到。關鍵影格描述的是動畫建變過程的外觀,也就是說,除了可以利用關鍵影格來控制 animation 動畫的跑動,也可以控制動畫的顏色改變。
CSS3 animation 範例一、讓 DIV 區塊由左移至右
<style type="text/css">
<!--
#D1{
width:100px;
height:100px;
background:red;
position:relative;
animation:TestMove 5s infinite; /*IE*/
-moz-animation:TestMove 5s infinite; /*FireFox*/
-webkit-animation:TestMove 5s infinite; /*Chrome, Safari*/
}
@keyframes TestMove{
from {left:0%;}
to {left:80%;}
}
@-moz-keyframes TestMove{
from {left:0%;}
to {left:80%;}
}
@-webkit-keyframes TestMove{
from {left:0%;}
to {left:80%;}
}
-->
</style>
<div style="width:700px;border:1px #ccc solid;padding:20px;">
<div id="D1"></div>
</div>
範例效果<!--
#D1{
width:100px;
height:100px;
background:red;
position:relative;
animation:TestMove 5s infinite; /*IE*/
-moz-animation:TestMove 5s infinite; /*FireFox*/
-webkit-animation:TestMove 5s infinite; /*Chrome, Safari*/
}
@keyframes TestMove{
from {left:0%;}
to {left:80%;}
}
@-moz-keyframes TestMove{
from {left:0%;}
to {left:80%;}
}
@-webkit-keyframes TestMove{
from {left:0%;}
to {left:80%;}
}
-->
</style>
<div style="width:700px;border:1px #ccc solid;padding:20px;">
<div id="D1"></div>
</div>
範例中的 animation 屬性以及關鍵影格 keyframes 前面都有加上字首(prefix),這樣的功能就是讓不同的瀏覽器能夠支援這個動畫的效果,其中「-moz-」是讓 FireFox 支援、「-webkit-」是要讓 Chrome 與 Safari 支援,都沒有加字首的是給 IE 看的,IE10 開始支援 CSS3 animation 屬性,IE9 以及更早版本的 IE 瀏覽器是不支援 animation 效果的。
CSS3 animation 範例二、讓 DIV 區塊左右來回運動
<style type="text/css">
<!--
#D2{
width:100px;
height:100px;
background:red;
position:relative;
animation:TestMove2 5s infinite alternate; /*IE*/
-moz-animation:TestMove2 5s infinite alternate; /*FireFox*/
-webkit-animation:TestMove2 5s infinite alternate; /*Chrome, Safari*/
}
@keyframes TestMove2{
from {left:0%;}
to {left:80%;}
}
@-moz-keyframes TestMove2{
from {left:0%;}
to {left:80%;}
}
@-webkit-keyframes TestMove2{
from {left:0%;}
to {left:80%;}
}
-->
</style>
<div style="width:700px;border:1px #ccc solid;padding:20px;">
<div id="D2"></div>
</div>
範例效果<!--
#D2{
width:100px;
height:100px;
background:red;
position:relative;
animation:TestMove2 5s infinite alternate; /*IE*/
-moz-animation:TestMove2 5s infinite alternate; /*FireFox*/
-webkit-animation:TestMove2 5s infinite alternate; /*Chrome, Safari*/
}
@keyframes TestMove2{
from {left:0%;}
to {left:80%;}
}
@-moz-keyframes TestMove2{
from {left:0%;}
to {left:80%;}
}
@-webkit-keyframes TestMove2{
from {left:0%;}
to {left:80%;}
}
-->
</style>
<div style="width:700px;border:1px #ccc solid;padding:20px;">
<div id="D2"></div>
</div>
CSS3 animation 範例三、讓 DIV 區塊變顏色
<style type="text/css">
<!--
#D3{
width:200px;
height:100px;
background:red;
position:relative;
animation:TestMove3 3s infinite alternate; /*IE*/
-moz-animation:TestMove3 3s infinite alternate; /*FireFox*/
-webkit-animation:TestMove3 3s infinite alternate; /*Chrome, Safari*/
}
@keyframes TestMove3{
from {background-color:red;}
to {background-color:orange;}
}
@-moz-keyframes TestMove3{
from {background-color:red;}
to {background-color:orange;}
}
@-webkit-keyframes TestMove3{
from {background-color:red;}
to {background-color:orange;}
}
-->
</style>
<div style="width:700px;border:0px #ccc solid;padding:20px;">
<div id="D3"></div>
</div>
範例效果<!--
#D3{
width:200px;
height:100px;
background:red;
position:relative;
animation:TestMove3 3s infinite alternate; /*IE*/
-moz-animation:TestMove3 3s infinite alternate; /*FireFox*/
-webkit-animation:TestMove3 3s infinite alternate; /*Chrome, Safari*/
}
@keyframes TestMove3{
from {background-color:red;}
to {background-color:orange;}
}
@-moz-keyframes TestMove3{
from {background-color:red;}
to {background-color:orange;}
}
@-webkit-keyframes TestMove3{
from {background-color:red;}
to {background-color:orange;}
}
-->
</style>
<div style="width:700px;border:0px #ccc solid;padding:20px;">
<div id="D3"></div>
</div>
- 語法「from {background-color:red;}」設置區塊背景顏色為紅色
- 語法「from {background-color:orange;}」設置區塊背景顏色為橘色
延伸閱讀