首頁 >web前端 >css教學 >為什麼 CSS `:not()` 選擇器在 Safari、Chrome 和 Firefox 中的行為不同?

為什麼 CSS `:not()` 選擇器在 Safari、Chrome 和 Firefox 中的行為不同?

Linda Hamilton
Linda Hamilton原創
2024-12-02 00:36:10323瀏覽

Why Does the CSS `:not()` Selector Behave Differently in Safari, Chrome, and Firefox?

:not() Safari、Chrome 和Firefox 之間的選擇器差異

瀏覽器通常會實現具有不同功能的功能,從而導致渲染差異。 CSS :not() 選擇器就是這樣一種情況,它在 Safari、Chrome 和 Firefox 中表現出不同的行為。

問題:

:not()在參數中指定多個層級時,選擇器無法如預期運作。在此範例中:

em:not(div) {
    color: red
}
em:not(p div) {
    color: blue
}

Safari 將文字呈現為藍色,而 Chrome 和 Firefox 使用紅色。

原因:

根本原因是 Safari 最近實現的 4 級 :not() 選擇器,它允許複雜的選擇器作為參數。另一方面,Chrome 和 Firefox 在目前版本的 :not() 中僅支援單級參數。

說明:

複雜選擇器包含多個由組合符分隔的複合選擇器(例如,後代、兄弟)。在本例中,「p div」是一個複雜選擇器,由兩個複合選擇器(「p」和「div」)組成,由後代組合器分隔。

預期行為:

根據:not() 的4 級規範,選擇器應將“blue”規則應用於不在“div”元素內的任何“ em”元素,無論它是否嵌套在“p”元素內。

當前狀態:

預計 Chrome 和 Firefox 最終將採用新規範,從而導致跨瀏覽器的一致行為。在那之前,開發人員應該意識到在這些瀏覽器中使用具有多個層級的 :not() 選擇器時可能存在的差異。

以上是為什麼 CSS `:not()` 選擇器在 Safari、Chrome 和 Firefox 中的行為不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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