大家早安,我是喵橘,今天要報告的 CSS 動畫部分,今天也請各位多多指教喔~
動畫的呈現就是由一個一個的關鍵影格所組合而成,所以,在設定動畫之前,要先把需要變化的關鍵影格設定完成,才能呈現不同變化的美。以下是關鍵影格的公式:
動畫效果有許多設定的方法,如下表所顯示:
設定值 | 說明 |
---|---|
animation-name | 設定動畫名稱。 |
animation-timing-function | 設定動畫轉換方式。 |
animation-direction | 設定動畫播放方向。 |
animation-duration | 設定動畫時間。 |
animation-iteration-count | 設定動畫重複次數。 |
animation-delay | 設定動畫延遲時間。 |
animation-play-state | 設定動畫播放情況。 |
要製作動畫的第一步,就要先取要使用的動畫名稱,假如此功能沒設定,動畫名稱則會呈現 none。
設定動畫轉換所需要的速度,從開始到結束都是以平滑轉換呈現。設定值如下表所顯示:
設定值 | 說明 |
---|---|
ease | 預設值。平滑開始到結束。 |
liner | 保持平均開始到結束。 |
ease-in | 開始由慢到結束最快。 |
ease-out | 開始由快到結束最慢。 |
ease-in-out | 開始由慢到中間快到結束慢。 |
設定動畫單次播放所需要的時間,單位為秒(s),預設值為 0。
設定值 | 說明 |
---|---|
normal | 預設值。開始播放到最後。 |
reverse | 反向播放,最後到開始。 |
alternate | 開始播放到最後,再由最後播放到開始。 |
alternate-reverse | 最後播放到開始,再由開始播放到最後。 |
設定動畫開始前所要等待的時間,單位為秒(s),預設值為 0。
CSS
@keyframes orange {
from { background-color: orange; }
to { background-color: green; }
}
div {
text-align: center;
}
.box1 {
width: 100px;
height: 100px;
background-color: lightblue;
position: absolute;
animation-name: orange;
animation-timing-function: ease-in;
animation-duration: 5s;
animation-delay: 3s;
}
HTML
<div class="box1">我是變化箱子</div>
範例圖示:
設定動畫播放的次數,預設為 1 ,假如設定 infinite 則會無限循環輪播。
設定動畫播放的方向。
設定動畫播放情況,預設值為 播放中(英語:running)
CSS
@keyframes orange {
from { left: 10px; }
to { left: 250px; }
}
div {
text-align: center;
}
.box1 {
width: 100px;
height: 100px;
background-color: lightblue;
position: absolute;
animation-name: orange;
animation-timing-function: ease-in;
animation-duration: 5s;
animation-direction: alternate-reverse;
animation-iteration-count: infinite;
}
.box1:hover {
animation-play-state: paused;
}
HTML
<div class="box1">我是變化箱子</div>
範例圖示:
假如熟悉 CSS 語法,就是要優化程式碼,這一個方法是最推薦也是對網頁執行效率最好的方法。
CSS
/*animation: 動畫名稱 動畫時間 動畫轉換方式 動畫轉換延遲時間 動畫重複次數 動畫播放方向 播放狀況*/
@keyframes orange {
from { width: 0; }
to { width: 100%; }
}
.loadbar {
background-color: orange;
height: 5px;
animation: orange 5s infinite ease-out;
}
HTML
<div class="loadbar"></div>
範例圖示:
今天是講解 CSS 動畫設定,明天是 CSS 總整理部分,非常感恩大家觀看。