問題:
CSS 選擇器等級3 規範要求包含無效選擇器的規則被丟棄。為什麼這是必要的,而不是簡單地刪除無法識別的選擇器並保留規則集?
基本原理:
根據CSS2.1 規格:
即使選擇器的其餘部分在CSS 2.1 中看起來可能很合理,但整個語句應該是如果選擇器中的任何地方出現錯誤,則忽略,因為不知道逗號在CSS 的未來更新中是否會獲得其他含義。CSS 選擇器等級 4 規範引入了功能偽類接受選擇器組作為參數,例如 :not()。這可能會導致解析中出現歧義,使實作很難在不造成潛在佈局中斷的情況下準確處理無效選擇器。
此外:
- 解析錯誤可能會在多個點發生,從而使其不確定在哪裡結束無效的選擇器、選擇器清單或聲明區塊。
- 規範沒有區分無法辨識的和無法辨識的格式錯誤的選擇器,簡化了錯誤處理。
- 某些佈局引擎的行為有所不同,例如 WebKit 會忽略帶有前綴的無法識別的選擇器並套用自己的選擇器。
- 更改此行為可能會破壞依賴它的現有網站選擇器駭客和過濾。
因此,忽略無效選擇器的規則可以保持一致性在錯誤處理中,確保向前相容性,並防止潛在的佈局問題。
以上是為什麼帶有無效選擇器的 CSS 規則會被丟棄,而不是只刪除無效部分?的詳細內容。更多資訊請關注PHP中文網其他相關文章!