首頁  >  文章  >  web前端  >  為什麼帶有無效選擇器的 CSS 規則會被丟棄,而不是只刪除無效部分?

為什麼帶有無效選擇器的 CSS 規則會被丟棄,而不是只刪除無效部分?

Barbara Streisand
Barbara Streisand原創
2024-11-10 18:59:03352瀏覽

Why are CSS rules with invalid selectors discarded instead of just removing the invalid part?

為什麼無效的CSS 選擇器會導致規則被刪除

問題:
CSS 選擇器等級3 規範要求包含無效選擇器的規則被丟棄。為什麼這是必要的,而不是簡單地刪除無法識別的選擇器並保留規則集?

基本原理:

根據CSS2.1 規格:

即使選擇器的其餘部分在CSS 2.1 中看起來可能很合理,但整個語句應該是如果選擇器中的任何地方出現錯誤,則忽略,因為不知道逗號在CSS 的未來更新中是否會獲得其他含義。

CSS 選擇器等級 4 規範引入了功能偽類接受選擇器組作為參數,例如 :not()。這可能會導致解析中出現歧義,使實作很難在不造成潛在佈局中斷的情況下準確處理無效選擇器。

此外:

  • 解析錯誤可能會在多個點發生,從而使其不確定在哪裡結束無效的選擇器、選擇器清單或聲明區塊。
  • 規範沒有區分無法辨識的和無法辨識的格式錯誤的選擇器,簡化了錯誤處理。
  • 某些佈局引擎的行為有所不同,例如 WebKit 會忽略帶有前綴的無法識別的選擇器並套用自己的選擇器。
  • 更改此行為可能會破壞依賴它的現有網站選擇器駭客和過濾。

因此,忽略無效選擇器的規則可以保持一致性在錯誤處理中,確保向前相容性,並防止潛在的佈局問題。

以上是為什麼帶有無效選擇器的 CSS 規則會被丟棄,而不是只刪除無效部分?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn