加入圖片截圖、CSS 動畫、滾動互動,讓你的網頁活起來
小成品 17-18 | Day 2 上午
曾慶良(阿亮老師)| AI 協作簡報實戰工作坊
加入圖片、截圖與視覺美化
學會使用 img 標籤插入圖片、加入 emoji 裝飾、用 AI 生成美化樣式
11:00 - 11:30加入滾動動畫與互動效果
CSS 動畫原理、IntersectionObserver 偵測滾動、hover 效果與回到頂部按鈕
11:30 - 12:00用圖片和 emoji 讓網頁更生動、更專業
圖片能幫助讀者快速理解內容,一張好的截圖勝過千字說明
純文字的頁面容易讓人疲勞,圖片能抓住視線、提升閱讀體驗
有圖片的作品集看起來更完整,展示時更有說服力
截取你使用的工具畫面,例如 NotebookLM、ChatGPT 介面等
在標題和內容中加入 emoji 符號,增加視覺趣味
請 AI 幫你生成漂亮的步驟樣式、圓形編號等 CSS 效果
加入圖片前後的頁面對比效果
截圖是最簡單的圖片來源,把你操作工具的畫面拍下來就好!
Win + Shift + S
按下後可以框選要截取的區域,截圖會自動複製到剪貼簿
Cmd + Shift + 4
按下後用十字游標框選區域,截圖會自動儲存到桌面
使用系統截圖工具擷取操作畫面
截圖拍好後,需要一個地方存放這些圖片檔案。
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 src="images/tool-homepage.png" alt="工具首頁截圖">
告訴瀏覽器圖片檔案在哪裡
src="images/xxx.png" 表示在 images 資料夾裡圖片無法顯示時會出現的文字
<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 後
Win + .
按下 Windows 鍵和句號鍵
Ctrl + Cmd + Space
按下三個鍵開啟 emoji 面板
加入 emoji 後的卡片標題效果
請 AI 幫你設計漂亮的「圓形編號 + 連接線」步驟卡片!
.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 生成的圓形編號步驟卡片效果
你的網頁已經加入圖片和視覺美化效果了!
使用截圖工具擷取畫面
用 img 標籤插入圖片
加入 emoji 裝飾標題
用 AI 生成美化 CSS
接下來,讓我們加入動畫效果,讓網頁真正「動」起來!
讓卡片隨著滾動淡入出現,加上 hover 浮起效果和回到頂部按鈕
躲在布幕後(透明)→ 觀眾看到(滾動到位置)→ 走出來(動畫出現)
卡片一開始是透明的,而且往下偏移一段距離
opacity: 0 + translateY(40px)
JavaScript 偵測卡片是否進入視窗範圍
IntersectionObserver 負責這件事
加上 visible class,卡片淡入並上移到正確位置
opacity: 1 + translateY(0)
控制視覺樣式:透明度、位移、動畫速度
定義「隱藏狀態」和「出現狀態」的樣子
控制觸發時機:偵測卡片是否滾動到畫面中
在正確時間加上 visible class
/* 初始狀態:隱藏 + 往下偏移 */
.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 動畫的隱藏與出現狀態
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:如果元素進入視窗範圍,回傳 trueclassList.add('visible'):加上 visible class,觸發 CSS 動畫threshold: 0.2:元素出現 20% 就觸發(0.2 = 20%)<script> 標籤中,確保所有 HTML 元素已經載入完成。
.card 和你的 HTML class 名稱是否一致</body> 前面
滾動時卡片依序淡入出現的效果
讓使用者把滑鼠移到卡片上時,卡片會微微浮起,增加互動感。
.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 效果,避免還沒出現的隱藏卡片也被觸發。
當頁面很長的時候,使用者需要一個快速回到頂部的方法。
<a href="#" class="back-to-top" title="回到頂部">↑</a>
.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 + translateY(-5px)
至少加入 2-3 張截圖
img 標籤 + images 資料夾
上午完成的作品全貌
修改 transition 的秒數,觀察效果差異:
0.3s → 快速俐落0.6s → 預設,自然流暢1.0s → 慢動作,有戲劇感1.5s → 超慢,優雅感把 translateY(40px) 換成其他方向:
translateX(-40px) → 從左邊滑入translateX(40px) → 從右邊滑入translateY(-40px) → 從上方滑入scale(0.8) → 從小變大用 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 分鐘
你的網頁已經加入滾動動畫和互動效果了!
CSS 滾動動畫(淡入 + 上移)
IntersectionObserver 偵測
Hover 浮起效果
回到頂部按鈕
上午的作品大功告成!下午我們要把它放到網路上,讓全世界都能看到!
src 指定圖片路徑,alt 提供替代文字,搭配 CSS 加圓角和陰影
opacity 控制透明度、transform 控制位移、transition 控制過渡時間
瀏覽器內建的「門衛」,偵測元素是否滾動到畫面中,自動觸發動畫
hover 讓卡片浮起增加互動感,fixed 讓按鈕固定在螢幕上不隨滾動消失