INTEGRATED LAB · Starter

Flexbox 軸線、縮放與順序|整合 Lab

在同一份章節作品中整合 4 個 module,排除單項通過但組合失敗的問題。

最後整合任務

交付:完成可換行、長內容安全且鍵盤順序正確的服務列。

將同一組責任轉用到另一個商家情境,仍達成:完成可換行、長內容安全且鍵盤順序正確的服務列。

限制:不新增框架。;保留 module id 與驗收證據。

依序回看每個 topic

整合不是重新背一遍名詞;是把每個 topic 的責任放回同一份作品。

  1. 1. flex-direction 與主/交叉軸
    files/starter/style.css|runtime before=row、after=column、property=flex-direction;畫面 item rect 由橫向分布改成縱向堆疊
    回到 topic 說明
  2. 2. flex-grow、shrink、basis
    files/starter/style.css|runtime before 包含 0 1 auto;after 包含 1 0 與 192px;property=flex
    回到 topic 說明
  3. 3. min-width: 0 解決長內容
    files/starter/style.css|runtime before=auto、after=0px、property=min-width;人工證據為 item 與頁面 scrollWidth<=clientWidth
    回到 topic 說明
  4. 4. order 與鍵盤順序風險
    files/starter/style.css|runtime focused=true、activeId=order-link-a;人工證據保存視覺序列與三步 document.activeElement 序列
    回到 topic 說明

四個整合停點

每個停點都要留下檔案、畫面或瀏覽器證據。

  1. Step 1|觀察整合 Starter 並找出第一個未通過 module。

    檔案:files/starter/index.html 定位:#observe

    操作:逐項讀取 outcomes,執行一次現況操作。

    // OBSERVE:不修改程式,先記錄第一個失敗 moduleId。

    預期:能指出第一個未通過 module。

    證據:第一個 moduleId 與缺少的 evidence。

    卡住先查:確認開啟的是 files/starter/index.html。

  2. Step 2|依 module 順序修改,一次只加入一個責任。

    檔案:files/starter/index.html 定位:#modify

    操作:執行實驗替 Flex container 切換 direction-column class,讀取 computed flex-direction。 → 執行實驗替 featured item 切換 flex-distribution class,讀取 computed flex shorthand。 → 執行實驗替含長 URL 的 Flex item 切換 allow-flex-shrink class,讀取 computed min-width。 → 執行受控 focus 實驗聚焦 DOM 第一個連結 A;再只用 Tab 從頁首記錄 A、B、C,與 CSS order 的視覺 C、A、B 對照。

    // 07-01-flex-direction: 執行實驗替 Flex container 切換 direction-column class,讀取 computed flex-direction。
    // 07-02-flex-grow-shrink-basis: 執行實驗替 featured item 切換 flex-distribution class,讀取 computed flex shorthand。
    // 07-03-min-width-0: 執行實驗替含長 URL 的 Flex item 切換 allow-flex-shrink class,讀取 computed min-width。
    // 07-04-order: 執行受控 focus 實驗聚焦 DOM 第一個連結 A;再只用 Tab 從頁首記錄 A、B、C,與 CSS order 的視覺 C、A、B 對照。

    預期:完成可換行、長內容安全且鍵盤順序正確的服務列。

    證據:runtime before=row、after=column、property=flex-direction;畫面 item rect 由橫向分布改成縱向堆疊;runtime before 包含 0 1 auto;after 包含 1 0 與 192px;property=flex;runtime before=auto、after=0px、property=min-width;人工證據為 item 與頁面 scrollWidth<=clientWidth;runtime focused=true、activeId=order-link-a;人工證據保存視覺序列與三步 document.activeElement 序列

    卡住先查:回到第一個未通過的 module,只修該處。

  3. Step 3|驗證所有 module 在整合後仍成立。

    檔案:files/solution/index.html 定位:#verify

    操作:重新整理並依 outcomes 順序重跑所有證據。

    // VERIFY:逐項記錄 pass/fail,不以看到畫面代替 evidence。

    預期:4/4 module 通過。

    證據:每個 moduleId 都有實際結果與重設後重現紀錄。

    卡住先查:若失敗,回到第一個失敗 module,不同時修多項。

  4. Step 4|把本章責任轉用到不同內容情境。

    檔案:files/starter/index.html 定位:#challenge

    操作:替另一個商家情境重做,仍達成:完成可換行、長內容安全且鍵盤順序正確的服務列。

    // CHALLENGE:只替換內容與資料,不新增框架或跳過 self-check。

    預期:完成可換行、長內容安全且鍵盤順序正確的服務列。

    證據:轉用後的作品與全數 module self-check。

    卡住先查:先確認共同基底與 module id 未被改壞。

完成本階段後,重新載入並保存整合證據。

回到自主學習入口