LESSON-05 · TOPIC 04
overflow 症狀與根因
能先以 scrollWidth/clientWidth 確認橫向溢位,再針對長字串根因使用 overflow-wrap,而不是隱藏捲軸。
code-edit盒模型、尺寸與溢位|overflow 症狀與根因本頁只練一個責任
本頁只練什麼
能先以 scrollWidth/clientWidth 確認橫向溢位,再針對長字串根因使用 overflow-wrap,而不是隱藏捲軸。
overflow-x:hidden 只遮住症狀,仍可能裁掉內容、焦點或操作區;修正根因才能保留可讀與可操作性。
要修改的檔案:files/starter/style.css
定位:在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。|依 module-4 定位,只修改「overflow 症狀與根因」的責任。
任務情境
先結果,再原理;完成後要能說出自己看見的證據。
現在的問題
手機版只有一張含長 URL 的服務卡造成整頁水平捲動。
起始狀態:卡片寬度受容器限制,但長 URL 使用 overflow-wrap:normal。
完成後要看到
runtime 的 overflow-wrap 由 normal 變 anywhere;人工重測時 scrollWidth 不再大於 clientWidth。
驗收證據:runtime before=normal、after=anywhere、property=overflow-wrap;人工證據為修正後 scrollWidth<=clientWidth
何時會用到
390px 出現水平捲軸、長 URL/訂單編號撐開卡片,或 focus outline 被裁切時。
常見混淆:overflow-wrap 修長字串,不會修正寫死 900px width;不同根因需要不同修正。
觀念與最小範例
這段程式是理解起點,不是要你直接跳過 Starter。
overflow 症狀與根因 Overflow symptoms and root causes
先量內容是不是超出去,再找是哪個盒子或哪段不能換行的文字把版面撐開。
正式說法:Overflow 發生於內容超出 box 的 padding box;overflow-wrap:anywhere 允許原本不可斷的字串在必要處換行,但不應取代尺寸與 min-content 根因分析。
.long-url { overflow-wrap:anywhere; }
三步完成本主題
每一步都留下可觀察結果;如果沒看到,先看「卡住先查」。
Step 1|先看見目前缺口,不急著貼答案。
檔案:files/starter/style.css 定位:在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。
要做:先重新載入 Starter,記錄目前畫面、DOM、Computed、Console 或文件內容。
預期:能指出「在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。」目前的缺口。
證據:保存 files/starter/style.css 的目前狀態,並指出下一步只會修改哪個檔案責任。
卡住先查:確認開啟的是 files/starter/style.css,且定位到 在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。。
Step 2|只修改本主題的一個責任。
檔案:files/starter/style.css 定位:在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。
要做:執行實驗替長 URL 切換 wrap-anywhere,讀取 computed overflow-wrap,再重新比較卡片 scrollWidth/clientWidth。
預期:runtime 的 overflow-wrap 由 normal 變 anywhere;人工重測時 scrollWidth 不再大於 clientWidth。
證據:runtime before=normal、after=anywhere、property=overflow-wrap;人工證據為修正後 scrollWidth<=clientWidth
卡住先查:在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。
Step 3|重新載入並以證據驗收,不以『看起來差不多』判定完成。
檔案:files/starter/style.css 定位:在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。
要做:重新整理頁面,再逐項比對預期結果與 evidence。
預期:runtime 的 overflow-wrap 由 normal 變 anywhere;人工重測時 scrollWidth 不再大於 clientWidth。
證據:runtime before=normal、after=anywhere、property=overflow-wrap;人工證據為修正後 scrollWidth<=clientWidth
卡住先查:在 Console 比較長 URL 元素與文件的 scrollWidth/clientWidth,確認第一個超寬元素。
觀察示範
這個示範只讓你看懂概念,不會替你修改 Starter,也不會自動宣告完成。
overflow 症狀與根因runtime fixture · read-only demo
本主題示範畫面:
https://example.com/services/this-is-a-very-long-unbroken-service-reference-number-2026
驗收證據
勾選只是學習紀錄;真正完成仍要回到 Starter 的實際結果。
提示 1|方向
先不要隱藏 overflow;找出第一個 scrollWidth 大於 clientWidth 的元素。
提示 2|關鍵片段
若根因是不可斷長字串,只加入 overflow-wrap:anywhere。
提示 3|完整解答與原因
完整解答與原因:長 URL 的 min-content 寬度撐開卡片;anywhere 提供必要斷點,保留全部文字並讓 scrollWidth 回到 clientWidth 內。