CHAPTER 12 · PRACTICE WORKSPACE

RWD:版面、圖片與手機導覽

在 320px 到桌機寬度都可閱讀、可操作的作品集

02 Checkpoint 1 1/3
  1. 01Starter讀懂作品骨架
  2. 02Checkpoint 1加入第一項能力
  3. 03Checkpoint 2累積第二項能力
  4. 04Solution核對完整結果

TASK STATUS

三項任務目前狀態

TASK-01已完成

讓圖片跟著容器縮放

修改檔案:style.css

完成後看見:320px 圖片 right 不超過父容器,且圖片保留比例

TASK-02本階段處理

設定由內容決定的卡片斷點

修改檔案:style.css

完成後看見:390px/800px/1100px 實際為一欄/兩欄/三欄

TASK-03稍後處理

讓手機導覽可換行且好點擊

修改檔案:style.css

完成後看見:320px 導覽可換行,連結留在導覽盒內且至少 44px 高,鍵盤與點擊都能到達三個錨點

WORKSPACE

本階段實作區

已完成 TASK-01;先核對可見結果,再前往 TASK-02。

FOCUS TASK · TASK-02

現在只處理:設定由內容決定的卡片斷點

修改:style.css

完成後:390px/800px/1100px 實際為一欄/兩欄/三欄

講解時展開:2 個小型比較

斷點 vs 內容寬度|由內容決定切換

比較:media query 的斷點應回應內容開始擁擠的時刻,不是照裝置名稱硬切。

現在做:暫時把 680px 改成 900px,依序測 800px 與 900px,觀察兩欄何時出現;恢復後再說明斷點應對應內容擁擠,而非裝置名稱。

看預期與證據

預期:800px 在原規則為兩欄;暫改 900px 後 800px 回到一欄,證明 media query 條件會直接改變可見欄數。

證據:前後紀錄包含 viewport 與實際欄數,並指出 CSS 中 680px 條件與 800px 結果的因果關係。

1fr vs 固定欄寬|卡片自適應

比較:1fr 讓欄位依可用空間分配,固定寬度容易在窄畫面產生擠壓或溢出;本章不延伸 minmax。

現在做:暫時把 .work-grid 的欄位改成固定 320px,於 390px 檢查是否產生水平溢出;恢復 1fr 與 repeat(2, 1fr) 後重跑三個 viewport。

看預期與證據

預期:固定欄寬會在窄畫面擠壓或溢出;恢復 1fr/repeat(2, 1fr) 後,卡片能依可用寬度排列。

證據:前後紀錄包含作品卡邊界、頁面 scrollWidth 與實際欄數,並說明固定欄寬與可用寬度的差異。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Checkpoint 1 從 320px 拉到桌機寬度,確認圖片已隨容器縮放,但作品卡仍在所有寬度固定一欄。
  2. B|預測:預測 390px 維持一欄,超過 680px 變兩欄,超過 1020px 變三欄。
  3. C|實作:在 style.css 的 .work-grid、680px 與 1020px media query 完成欄數切換,一次只處理本任務責任。
  4. D|故障:若欄數不一致,先重跑 390/800/1100px,再檢查 grid-template-columns、media query 條件與載入中的 style.css。
  5. E|驗收:390px/800px/1100px 實際為一欄/兩欄/三欄,且與 CSS 斷點一致。

完成條件:DONE-02:390px/800px/1100px 實際為一欄/兩欄/三欄,且與 680px/1020px CSS 斷點一致

綠色作品集示意圖
圖片要完整留在容器內。

活動頁

清楚整理活動資訊。

品牌頁

呈現品牌故事。

聯絡頁

提供可使用的聯絡入口。

第 11 章 → 第 12 章

把可追查的 CSS 放回不同寬度

第 11 章的 .work-card/.work-card__action DOM 不直接複製到本章;保留 --color-brand、--color-ink、--space-card 與 CTA/focus/reduced-motion 責任,移植到 .hero-media img/.work-grid/.portfolio-nav,並把 320/390/800/1100 viewport 證據交給第 13 章的 .portfolio-shell/.portfolio-links。

CONTINUE

繼續完成 TASK-02

前往 Checkpoint 2,依要求完成「設定由內容決定的卡片斷點」。

前往 Checkpoint 2:完成 TASK-02