Part 10:圖片美化與互動效果

加入圖片截圖、CSS 動畫、滾動互動,讓你的網頁活起來

img 標籤 截圖 emoji CSS 動畫 IntersectionObserver

小成品 17-18 | Day 2 上午
曾慶良(阿亮老師)| AI 協作簡報實戰工作坊

本章學習地圖

小成品 17

加入圖片、截圖與視覺美化

學會使用 img 標籤插入圖片、加入 emoji 裝飾、用 AI 生成美化樣式

11:00 - 11:30

小成品 18

加入滾動動畫與互動效果

CSS 動畫原理、IntersectionObserver 偵測滾動、hover 效果與回到頂部按鈕

11:30 - 12:00
學習目標:讓你的靜態網頁加入圖片、動畫和互動,從「能看」變成「好看又好用」!
11:00 - 11:30

小成品 17:加入圖片、截圖與視覺美化

用圖片和 emoji 讓網頁更生動、更專業

img 標籤 截圖工具 emoji CSS 美化

為什麼要加圖片?

更容易閱讀

圖片能幫助讀者快速理解內容,一張好的截圖勝過千字說明

更吸引人

純文字的頁面容易讓人疲勞,圖片能抓住視線、提升閱讀體驗

更專業

有圖片的作品集看起來更完整,展示時更有說服力

三種圖片來源

工具截圖

截取你使用的工具畫面,例如 NotebookLM、ChatGPT 介面等

emoji 裝飾

在標題和內容中加入 emoji 符號,增加視覺趣味

AI 美化 CSS

請 AI 幫你生成漂亮的步驟樣式、圓形編號等 CSS 效果

加入圖片前後對比

加入圖片前後的頁面對比效果

截取工具操作截圖

截圖是最簡單的圖片來源,把你操作工具的畫面拍下來就好!

Windows 截圖快捷鍵

Win + Shift + S

按下後可以框選要截取的區域,截圖會自動複製到剪貼簿

Mac 截圖快捷鍵

Cmd + Shift + 4

按下後用十字游標框選區域,截圖會自動儲存到桌面

建議截取的畫面

  • 工具首頁:展示你使用了哪些 AI 工具
  • API Key 輸入畫面:展示設定過程(注意遮住金鑰!)
  • 角色描述畫面:展示你設計的 AI 角色
  • 對話結果:展示 AI 回覆的效果
截圖操作示範

使用系統截圖工具擷取操作畫面

建立 images 資料夾

截圖拍好後,需要一個地方存放這些圖片檔案。

資料夾結構

my-project/
  ├── my-card-page.html    <-- 你的網頁檔案
  └── images/              <-- 新建這個資料夾
       ├── tool-homepage.png
       ├── api-key-input.png
       ├── chat-result.png
       └── role-setting.png

命名規則

  • 用英文命名tool-homepage.png(不要用中文)
  • 用小寫字母api-key-input.png(不要用大寫)
  • 用短橫線分隔chat-result.png(不要用空格)
  • 說明性名稱:看檔名就知道是什麼圖片
重要提醒:檔案路徑最好用英文!中文路徑在某些伺服器上可能會出錯,養成用英文命名的好習慣。
操作步驟:在你的專案資料夾中,右鍵 → 新增資料夾 → 命名為 images → 把截圖存進去。

img 標籤用法

基本語法

<img src="images/tool-homepage.png" alt="工具首頁截圖">

src = source(來源)

告訴瀏覽器圖片檔案在哪裡

  • src="images/xxx.png" 表示在 images 資料夾裡
  • 路徑是相對於 HTML 檔案的位置

alt = alternative(替代文字)

圖片無法顯示時會出現的文字

  • 對視障者的螢幕閱讀器很重要
  • 也有助於 SEO 搜尋引擎最佳化

加上 CSS 美化

<img src="images/tool-homepage.png"
     alt="工具首頁截圖"
     style="width: 100%;
            border-radius: 12px;
            box-shadow: 0 4px 15px rgba(0,0,0,0.2);">
小技巧:width: 100% 讓圖片自動填滿容器寬度;border-radius 加圓角;box-shadow 加陰影,三行 CSS 就能讓圖片質感大提升!

圖片插入效果展示

加入圖片後,原本純文字的卡片頁面瞬間變得更豐富、更專業!

加圖片前

只有文字和標題,版面空洞

讀者容易失去興趣

加圖片後

圖文並茂,專業度大幅提升

一目了然,吸引眼球

加入圖片後的效果

加入圖片後的卡片頁面效果

效果立竿見影:只要加幾張截圖,網頁的「完成度」和「專業感」就會大幅提升。圖片是最省力的視覺升級方式!

加入 emoji 裝飾

emoji 是最簡單的視覺裝飾,不需要找圖片,直接打字就能用!

範例:卡片標題加上 emoji

原本的標題

  • 工具介紹
  • 操作步驟
  • 學習心得
  • 未來計畫

加 emoji 後

  • 🛠️ 工具介紹
  • 📋 操作步驟
  • 💡 學習心得
  • 🚀 未來計畫

如何輸入 emoji

Windows

Win + .

按下 Windows 鍵和句號鍵

Mac

Ctrl + Cmd + Space

按下三個鍵開啟 emoji 面板

emoji 裝飾效果

加入 emoji 後的卡片標題效果

用 AI 生成步驟樣式

請 AI 幫你設計漂亮的「圓形編號 + 連接線」步驟卡片!

Prompt 範例

你可以這樣問 AI:「請幫我設計一個步驟流程的 CSS 樣式,要有圓形編號、連接線、每個步驟有標題和說明文字,風格要現代簡約。」

AI 生成的 CSS 範例

.step-item {
  display: flex;
  align-items: flex-start;
  margin-bottom: 20px;
  position: relative;
}
.step-circle {
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, #667eea, #764ba2);
  border-radius: 50%;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: bold;
  flex-shrink: 0;
}
.step-content {
  margin-left: 15px;
}
/* 連接線 */
.step-item:not(:last-child)::after {
  content: '';
  position: absolute;
  left: 20px;
  top: 45px;
  width: 2px;
  height: calc(100% - 20px);
  background: #667eea;
}
步驟卡片樣式

AI 生成的圓形編號步驟卡片效果

小成品 17 完成!

你的網頁已經加入圖片和視覺美化效果了!

已學會

使用截圖工具擷取畫面

已學會

用 img 標籤插入圖片

已學會

加入 emoji 裝飾標題

已學會

用 AI 生成美化 CSS

接下來,讓我們加入動畫效果,讓網頁真正「動」起來!

11:30 - 12:00

小成品 18:加入滾動動畫與互動效果

讓卡片隨著滾動淡入出現,加上 hover 浮起效果和回到頂部按鈕

CSS 動畫 IntersectionObserver hover fixed 定位

滾動動畫原理

魔術師比喻

躲在布幕後(透明)→ 觀眾看到(滾動到位置)→ 走出來(動畫出現)

Step 1:隱藏

卡片一開始是透明的,而且往下偏移一段距離

opacity: 0 + translateY(40px)

Step 2:偵測

JavaScript 偵測卡片是否進入視窗範圍

IntersectionObserver 負責這件事

Step 3:出現

加上 visible class,卡片淡入並上移到正確位置

opacity: 1 + translateY(0)

CSS 負責什麼?

控制視覺樣式:透明度、位移、動畫速度

定義「隱藏狀態」和「出現狀態」的樣子

JavaScript 負責什麼?

控制觸發時機:偵測卡片是否滾動到畫面中

在正確時間加上 visible class

CSS 動畫樣式

在你的 CSS 中加入這兩段

/* 初始狀態:隱藏 + 往下偏移 */
.card {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

/* 出現狀態:顯示 + 回到原位 */
.card.visible {
  opacity: 1;
  transform: translateY(0);
}

逐行解釋

CSS 屬性 意思 生活比喻
opacity: 0 完全透明(看不見) 魔術師躲在布幕後
transform: translateY(40px) 往下移動 40 像素 蹲在舞台下方
transition: ... 0.6s ease 變化過程花 0.6 秒,緩入緩出 慢慢走出來,不是瞬間移動
opacity: 1 完全不透明(看得見) 站到舞台中央
translateY(0) 回到原本位置 站直,面對觀眾
CSS 動畫程式碼

CSS 動畫的隱藏與出現狀態

JavaScript IntersectionObserver

「門衛」比喻

IntersectionObserver 就像一個站在門口的門衛,負責偵測誰進入了視線範圍。

程式碼

// 建立一個「門衛」觀察者
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // 卡片進入視線範圍了!加上 visible class
      entry.target.classList.add('visible');
    }
  });
}, {
  threshold: 0.2  // 出現 20% 就觸發
});

// 讓門衛觀察所有卡片
document.querySelectorAll('.card').forEach(card => {
  observer.observe(card);
});

程式碼解釋

  • IntersectionObserver:瀏覽器內建的「偵測元素是否在畫面中」的工具
  • entry.isIntersecting:如果元素進入視窗範圍,回傳 true
  • classList.add('visible'):加上 visible class,觸發 CSS 動畫
  • threshold: 0.2:元素出現 20% 就觸發(0.2 = 20%)
把這段 JS 放在哪裡?放在 HTML 最下方的 <script> 標籤中,確保所有 HTML 元素已經載入完成。

測試動畫效果

測試步驟

  1. 1儲存你的 HTML 檔案
  2. 2在瀏覽器中重新整理頁面(Ctrl + R 或 Cmd + R)
  3. 3慢慢往下滾動,觀察每張卡片的出現動畫
  4. 4卡片應該會從下方「淡入上移」到正確位置
看不到動畫?確認以下事項:
  • CSS 中的 .card 和你的 HTML class 名稱是否一致
  • JavaScript 是否放在 </body> 前面
  • 瀏覽器主控台有沒有錯誤訊息(按 F12 查看)
滾動動畫效果

滾動時卡片依序淡入出現的效果

Hover 效果:滑鼠移上去卡片浮起

讓使用者把滑鼠移到卡片上時,卡片會微微浮起,增加互動感。

CSS 程式碼

.card.visible:hover {
  transform: translateY(-5px);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

效果說明

CSS 屬性 效果
translateY(-5px) 卡片往上浮起 5 像素
box-shadow: 0 12px 30px ... 加深陰影,營造「懸浮」的視覺效果
transition: 0.3s ease 浮起的過程花 0.3 秒,感覺更自然
為什麼用 .card.visible:hover確保只有已經出現(有 visible class)的卡片才有 hover 效果,避免還沒出現的隱藏卡片也被觸發。
小細節大加分:hover 效果雖然只是微小的視覺變化,但能讓使用者感受到「這個網站是有互動的」,大幅提升專業感。

回到頂部按鈕

當頁面很長的時候,使用者需要一個快速回到頂部的方法。

HTML 程式碼

<a href="#" class="back-to-top" title="回到頂部">↑</a>

CSS 程式碼

.back-to-top {
  position: fixed;
  bottom: 30px;
  right: 30px;
  width: 50px;
  height: 50px;
  background: linear-gradient(135deg, #667eea, #764ba2);
  color: white;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  text-decoration: none;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
  z-index: 1000;
  transition: transform 0.3s ease;
}

.back-to-top:hover {
  transform: scale(1.1);
}

重點說明

  • position: fixed:固定在螢幕上,不會隨著滾動消失
  • bottom: 30px; right: 30px:固定在右下角
  • z-index: 1000:確保按鈕在所有內容的最上層
  • href="#":點擊後跳回頁面最頂端

上午最終檢查清單

在結束上午課程前,確認你的作品具備以下功能:

滾動動畫

卡片在滾動時會淡入出現

IntersectionObserver + CSS transition

手機版適配

在手機上也能正常顯示

F12 → 手機模擬器檢查

目錄連結

點擊目錄可跳到對應區塊

使用 id + href="#xxx"

回到頂部按鈕

右下角固定的圓形按鈕

position: fixed

Hover 效果

滑鼠移上卡片會浮起

:hover + translateY(-5px)

圖片與截圖

至少加入 2-3 張截圖

img 標籤 + images 資料夾

完成品全貌

上午完成的作品全貌

練習時間

練習 A:調整動畫速度

修改 transition 的秒數,觀察效果差異:

  • 0.3s → 快速俐落
  • 0.6s → 預設,自然流暢
  • 1.0s → 慢動作,有戲劇感
  • 1.5s → 超慢,優雅感
5 分鐘

練習 B:改變動畫方向

translateY(40px) 換成其他方向:

  • translateX(-40px) → 從左邊滑入
  • translateX(40px) → 從右邊滑入
  • translateY(-40px) → 從上方滑入
  • scale(0.8) → 從小變大
5 分鐘

練習 C:依序出現效果

transition-delay 讓卡片依序出現:

.card:nth-child(1) {
  transition-delay: 0s;
}
.card:nth-child(2) {
  transition-delay: 0.1s;
}
.card:nth-child(3) {
  transition-delay: 0.2s;
}
5 分鐘
自由發揮:試著混合不同的動畫方向和速度,找到你最喜歡的組合!

小成品 18 完成!

你的網頁已經加入滾動動畫和互動效果了!

已完成

CSS 滾動動畫(淡入 + 上移)

已完成

IntersectionObserver 偵測

已完成

Hover 浮起效果

已完成

回到頂部按鈕

上午的作品大功告成!下午我們要把它放到網路上,讓全世界都能看到!

本章回顧

img 標籤

src 指定圖片路徑,alt 提供替代文字,搭配 CSS 加圓角和陰影

CSS 動畫

opacity 控制透明度、transform 控制位移、transition 控制過渡時間

IntersectionObserver

瀏覽器內建的「門衛」,偵測元素是否滾動到畫面中,自動觸發動畫

hover + fixed

hover 讓卡片浮起增加互動感,fixed 讓按鈕固定在螢幕上不隨滾動消失

下一章預告

Part 11 - GitHub Pages 部署

把你的作品上傳到 GitHub,部署到網路上讓全世界都能看到!

前往 Part 11 →
上午作品完成!下午把它放到網路上讓全世界看到!