完整解釋
白話:瀏覽器看到不認得的屬性值,會跳過那一筆,繼續使用其他有效規則。
正式說法:當 declaration 的 property value 不符合該 property grammar,user agent 會忽略該 declaration,不會回溯改寫其他有效 declarations。
何時使用:某一個 CSS property 沒生效,但同一規則或同一檔案的其他樣式仍正常時。
修改前後:Before:看到一行錯誤就認為整份 stylesheet 壞掉。After:在 Styles 找無效宣告,再讀 Computed 的實際保留值。
常見混淆:被 cascade 覆蓋的有效宣告與語法無效的宣告不同;前者可解析但輸掉,後者不會成為指定值。
名詞與最小範例
瀏覽器如何忽略無效宣告 CSS error handling for invalid declarations
- 白話
- 瀏覽器看到不認得的屬性值,會跳過那一筆,繼續使用其他有效規則。
- 正式定義
- 當 declaration 的 property value 不符合該 property grammar,user agent 會忽略該 declaration,不會回溯改寫其他有效 declarations。
- 何時使用
- 某一個 CSS property 沒生效,但同一規則或同一檔案的其他樣式仍正常時。
- 最小範例
- .copy { color:#17324d } .copy.invalid-value { color:definitely-not-a-color }
- 驗收證據
- runtime before 與 after 都等於 rgb(23, 50, 77),property=color
- 常混淆
- 被 cascade 覆蓋的有效宣告與語法無效的宣告不同;前者可解析但輸掉,後者不會成為指定值。
Micro Lab|瀏覽器如何忽略無效宣告
情境:同事把品牌文字色寫成不存在的 CSS 顏色名稱,但頁面仍顯示前一條有效顏色。
起始狀態:目標元素由基礎規則取得 rgb(23, 50, 77),尚未加 invalid-value class。
- 執行實驗切換 invalid-value class,前後都讀取同一元素的 computed color。
- 執行下方操作,觀察獨立的 DOM 與資料狀態。
- 依證據欄位重新驗收。
目前主題:瀏覽器如何忽略無效宣告
預期:before 與 after 都是 rgb(23, 50, 77),Styles 可指出無效 `color: definitely-not-a-color`。
證據:runtime before 與 after 都等於 rgb(23, 50, 77),property=color
第一個檢查:先在 Computed 記下 color,再到 Styles 找 color 值旁的無效提示。
重設:重新載入 module,移除 invalid-value class。
卡住時
- 症狀:切換後 computed color 真的改變。
可能原因:所用值其實是合法 CSS color,或另一條有效規則同時命中。
先檢查:在 Styles 檢查 invalid-value 規則的原始值與其他 color 宣告。
修正:fixture 只保留一條基礎有效值與一條明確無效值 definitely-not-a-color。
本模組官方來源:MDN|CSS error handling