作爲文檔語言的一部分,名稱空間不直接應用於僞類或僞元素,因爲它們是用CSS定義的,而不是文檔語言(例如XML)。但是,元素類型和屬性是在文檔語言中定義的,而不是CSS,這就是它們可以命名空間的原因。因此,在一系列簡單的選擇器中,通用選擇器具體指「任何類型」。
沒有命名空間中使用時(這是通用選擇只暗示其他簡單的選擇和僞元素爲什麼選擇像.foo
,#target
,[type="text"]
,:first-child
和::before
是有效的,並且通常與語言一樣使用HTML,其中CSS最常用於造型)。從spec:
如果*
(即,沒有一個命名空間前綴)表示的通用選擇不是一個sequence of simple selectors選擇器的唯一部件或之後緊接着一個pseudo-element,則*
可以被省略,並且普遍隱含選擇器的存在。
因此,在你的榜樣,選擇是無效的,因爲有沒有一個普遍的選擇或|
和:
之間的類型選擇:
/* These are all invalid */
*|:first-child
ns|::first-letter
|::before
如果您指定一個命名空間,你必須指定通用選擇,如果你不選擇一個特定的類型,而不是:
*|*:first-child
*|*::before
在ns
選擇元素時也是一樣命名空間:
ns|*:first-child
ns|*::before
或選擇不在一個命名空間元素時:
|*:first-child
|*::before
請不要混淆僞類和僞元素 - 它們是兩個不同的東西。 – BoltClock
噢,對不起,我明白不同之處(注意這個問題確實會說「僞類」,我剛剛得到了錯誤的標題!) –
我只是碰到了你的錯誤報告:) https://bugs.webkit。 org/show_bug.cgi?id = 89748 – BoltClock