CSS-7: 動畫呈現全解析

更新 發佈閱讀 8 分鐘

本章節是我們將提到CSS中基本的動畫呈現。透過實作一個月球軌道旋轉效果。

首先,先確定我們在 HTML 中要使用到的元素,分別是地球、軌道和月球,以下是HTML程式碼:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<title>Moon Orbit</title>
</head>

<body>
<div class="space">
<div class="earth"></div>
<div class="orbit">
<div class="moon"></div>
</div>
</div>
</body>

</html>

好,接著我們為body區塊和space空間設定CSS樣式:

body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #000;
}
.space {
width: 200px;
height: 200px;
position: relative; /* 為後續的元素設定參考點以供參考 */
background-color: #fff; /* 這行之後可以自行刪掉 */
}

呈現效果:

raw-image

接著我們設定地球的CSS樣式,他應該置中於space

.earth {
width: 100px;
height: 100px;
background-color: #0077be;
border-radius: 50%;
position: absolute;
left: 50%;
top: 50%;
}

呈現效果:

raw-image

這邊你可以發現: 地球並沒有位於中心,這是因為left: 50%top: 50%是相對於父元素的。

所以我們要添加transform: translate(-50%, -50%);這行語句,這裡的 translate基於元素自身尺寸的(水平向左偏移 50%,垂直向上偏移 50%)。

.earth {
width: 100px;
height: 100px;
background-color: #0077be;
border-radius: 50%;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}

呈現效果:

raw-image

好,接著要為軌道設定CSS樣式:

.orbit {
background-color: pink;
z-index: -1;
width: 200px;
height: 200px;
position: absolute;
transform: translate(-50%, -50%);
}
  • 這邊我將背景顏色設為粉紅色、z-index 設為 -1 ,讓我們方便觀察效果。
raw-image

這時候,我們來為月球設定CSS樣式,

.moon {
width: 30px;
height: 30px;
background-color: #c0c0c0;
border-radius: 50%;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
}

呈現效果:

raw-image

這時候,讀者可以想像將粉紅色方塊一直旋轉時(固定右下角並順時針旋轉),月球就像是在繞著地球轉動,且保持了一個適當的距離做旋轉。

那我們當然要把旋轉的效果做出來,這時候就需要了解動畫如何運作了。

CSS 動畫分為兩大類:過渡(Transitions)關鍵影格動畫(Keyframes Animation)。以下是詳細介紹:

CSS 過渡允許當元素的屬性值發生變化時,逐步地進行過渡效果。

transition: property duration timing-function delay;
  • property: 指定要應用過渡效果的屬性(例如:colorbackground-colortransform)。
  • duration: 過渡持續時間(例如:1s)。
  • timing-function: 控制過渡的節奏(例如:easelinearease-inease-out)。
  • delay: 過渡開始的延遲時間(例如:0.5s)。

而另一種就是我現在要使用的,CSS 關鍵影格動畫允許開發者定義多個動畫狀態,並根據時間進行控制,實現複雜的動畫效果。

語法:

@keyframes animation-name {
0% { /* 起始狀態 */ }
50% { /* 中間狀態 */ }
100% { /* 結束狀態 */ }
}

selector {
animation: animation-name duration timing-function delay iteration-count direction fill-mode;
}
  • animation-name: 指定動畫名稱。
  • duration: 動畫持續時間。
  • timing-function: 動畫速度曲線。
  • delay: 動畫延遲時間。
  • iteration-count: 動畫重複次數(如 infinite 表示無限循環)。
  • direction: 動畫方向(如 normalreverse)。
  • fill-mode: 動畫結束後的狀態(如 forwards 保留最後狀態)。

這邊我們直接實作一個簡單的轉動動畫效果 :

定義一個名為orbit的動畫,實現了物體旋轉的效果。

@keyframes orbit {
0% {
transform: rotate(0deg) translate(-50%, -50%);
}
100% {
transform: rotate(360deg) translate(-50%, -50%);
}
}
  • 包括兩個關鍵影格(0%100%)表示動畫的起始和結束狀態。

0%(動畫的起始狀態):

  • transform: rotate(0deg): 元素初始旋轉角度為 0度,即沒有旋轉。
  • translate(-50%, -50%): 讓粉紅色方塊的右下角對齊 space 中心點位置。

100%(動畫的結束狀態):

  • transform: rotate(360deg): 元素完成一整圈旋轉(360 度),回到起始角度。
  • translate(-50%, -50%): 一樣讓粉紅色方塊的右下角對齊 space 中心點位置。

好,最後我們只要再做一步就可以讓動畫運作了,將以下語句插入到 .orbit 選擇器中:

animation: orbit 5s linear infinite;
  • animation-name: orbit;
    • 指定應用的動畫名稱是 orbit,對應前面定義的 @keyframes orbit。
  • animation-duration: 5s;
    • 動畫的執行時間為 5 秒,完成一整圈旋轉。
  • animation-timing-function: linear;
    • 動畫的速度曲線是線性的,即每個時刻的旋轉速度都相同,保持均勻。
  • animation-iteration-count: infinite;
    • 動畫會無限次循環執行。
.orbit {
background-color: pink; /* 讀者可以自行刪掉這行 */
z-index: -1; /* 讀者可以自行刪掉這行 */
width: 200px;
height: 200px;
position: absolute;
transform: translate(-50%, -50%); /* 當動畫開始後讀者可以刪掉這行,這邊只是為了觀察月球是否保持了一個適當的距離 */
animation: orbit 5s linear infinite;
}

這時候,動畫的效果就完成了,應該會呈現月球繞著地球轉動的動畫效果。







留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
14會員
242內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/03
本章節你將了解 日期物件,包括處理日期的方法以及如何設定日期格式,切入要點的示範所有常見的使用方法範例與應用。
Thumbnail
2025/03/03
本章節你將了解 日期物件,包括處理日期的方法以及如何設定日期格式,切入要點的示範所有常見的使用方法範例與應用。
Thumbnail
2025/03/03
表單驗證是一個在用戶輸入資料時確保其正確性、完整性及格式符合要求的重要功能,它可以在用戶提交表單之前進行檢查,防止錯誤資料的傳輸。本章節將帶你初步了解其原理與使用。
2025/03/03
表單驗證是一個在用戶輸入資料時確保其正確性、完整性及格式符合要求的重要功能,它可以在用戶提交表單之前進行檢查,防止錯誤資料的傳輸。本章節將帶你初步了解其原理與使用。
2025/03/03
本篇文章深入淺出地介紹 JavaScript 正規表達式,從基本語法、常用符號、方法應用到進階的捕獲群組、斷言等,並搭配豐富的範例程式碼,幫助讀者快速掌握正規表達式的使用技巧。
2025/03/03
本篇文章深入淺出地介紹 JavaScript 正規表達式,從基本語法、常用符號、方法應用到進階的捕獲群組、斷言等,並搭配豐富的範例程式碼,幫助讀者快速掌握正規表達式的使用技巧。
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
本章介紹了 CSS 中的顏色和背景屬性,包括文本顏色的設置方法、背景顏色和背景圖片的應用、背景重複和位置的配置,以及線性漸變和徑向漸變的使用。這些知識將幫助你更靈活地設計和美化網頁。
Thumbnail
本章介紹了 CSS 中的顏色和背景屬性,包括文本顏色的設置方法、背景顏色和背景圖片的應用、背景重複和位置的配置,以及線性漸變和徑向漸變的使用。這些知識將幫助你更靈活地設計和美化網頁。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:CC Bend It 彎曲 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:CC Bend It 彎曲 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Adjustment Layer 調整圖層 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Adjustment Layer 調整圖層 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Orbit 環繞效果 + 物件面對鏡頭 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Orbit 環繞效果 + 物件面對鏡頭 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Null Object 控制物體旋轉 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Null Object 控制物體旋轉 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:製作3D 方塊 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:製作3D 方塊 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
介紹如何使用 Warp 效果來製作箱子擠壓效果!
Thumbnail
介紹如何使用 Warp 效果來製作箱子擠壓效果!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News