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;
}

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







在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!

































































在本章節,我們將製作圖書館庫存表格,複習關於表格的觀念並學習屬性選擇器、變數的觀念。 ✅ 徹底熟悉 HTML 表格標籤與結構 ✅ 掌握 CSS 屬性選擇器 來提高設定樣式的靈活性 ✅ 利用 CSS 變數 來提升 樣式管理與維護效率
CSS Grid Layout(網格佈局)是一種二維布局系統,比 Flexbox 更適合複雜的頁面佈局,特別是在設計網格化的內容區塊時。 本節我們將實作一個活動流程表,讓讀者了解如何實際使用,啟發 Grid 佈局的基礎使用能力。
Flexbox一種強大佈局技術,主要用於一維排列 的元素。它提供了更靈活的對齊方式,能夠輕鬆控制子元素的方向、對齊方式、間距與自適應能力,適用於現代網頁設計與響應式開發。使用方式為在 HTML 的父元素當中,透過寫入 display:flex; 這行語法,即能夠讓子元素產生各種排列的方式。
本章介紹 HTML & CSS 中的表格 、列表 、表單以及偽類與偽元素 ,這些是 網頁結構與互動設計 的重要組成部分。透過這篇內容,你將學會如何有效地使用這些 HTML 元素,並透過 CSS 來 美化樣式與提升使用者體驗。
除了你現在知道的通用選擇器、類別選擇器、全域選擇器,我們還是有必要繼續探索其他的選擇器。 另外,Position佈局在CSS是一項重要的概念,本章將帶你完全學會與掌握這些現代網頁設計的關鍵技術!
CSS 是用來設計 HTML 文件樣式 的語言,負責 「樣式呈現」的部分,如 字體、顏色、排版、動畫效果等。它決定了 HTML 元素應如何在螢幕上顯示,讓網頁更加美觀且具有吸引力。 本文章內容涵蓋 CSS 的三種引入方式、CSS 的基本設定、盒子模型與 class 選擇器,帶你快速踏入CSS的大門。
在本章節,我們將製作圖書館庫存表格,複習關於表格的觀念並學習屬性選擇器、變數的觀念。 ✅ 徹底熟悉 HTML 表格標籤與結構 ✅ 掌握 CSS 屬性選擇器 來提高設定樣式的靈活性 ✅ 利用 CSS 變數 來提升 樣式管理與維護效率
CSS Grid Layout(網格佈局)是一種二維布局系統,比 Flexbox 更適合複雜的頁面佈局,特別是在設計網格化的內容區塊時。 本節我們將實作一個活動流程表,讓讀者了解如何實際使用,啟發 Grid 佈局的基礎使用能力。
Flexbox一種強大佈局技術,主要用於一維排列 的元素。它提供了更靈活的對齊方式,能夠輕鬆控制子元素的方向、對齊方式、間距與自適應能力,適用於現代網頁設計與響應式開發。使用方式為在 HTML 的父元素當中,透過寫入 display:flex; 這行語法,即能夠讓子元素產生各種排列的方式。
本章介紹 HTML & CSS 中的表格 、列表 、表單以及偽類與偽元素 ,這些是 網頁結構與互動設計 的重要組成部分。透過這篇內容,你將學會如何有效地使用這些 HTML 元素,並透過 CSS 來 美化樣式與提升使用者體驗。
除了你現在知道的通用選擇器、類別選擇器、全域選擇器,我們還是有必要繼續探索其他的選擇器。 另外,Position佈局在CSS是一項重要的概念,本章將帶你完全學會與掌握這些現代網頁設計的關鍵技術!
CSS 是用來設計 HTML 文件樣式 的語言,負責 「樣式呈現」的部分,如 字體、顏色、排版、動畫效果等。它決定了 HTML 元素應如何在螢幕上顯示,讓網頁更加美觀且具有吸引力。 本文章內容涵蓋 CSS 的三種引入方式、CSS 的基本設定、盒子模型與 class 選擇器,帶你快速踏入CSS的大門。
你可能也想看
Google News 追蹤
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
本章介紹了 CSS 中的顏色和背景屬性,包括文本顏色的設置方法、背景顏色和背景圖片的應用、背景重複和位置的配置,以及線性漸變和徑向漸變的使用。這些知識將幫助你更靈活地設計和美化網頁。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:CC Bend It 彎曲 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Adjustment Layer 調整圖層 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Orbit 環繞效果 + 物件面對鏡頭 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Null Object 控制物體旋轉 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:製作3D 方塊 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
本章介紹了 CSS 中的顏色和背景屬性,包括文本顏色的設置方法、背景顏色和背景圖片的應用、背景重複和位置的配置,以及線性漸變和徑向漸變的使用。這些知識將幫助你更靈活地設計和美化網頁。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:CC Bend It 彎曲 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Adjustment Layer 調整圖層 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Orbit 環繞效果 + 物件面對鏡頭 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Null Object 控制物體旋轉 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:製作3D 方塊 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。