僞類和僞元素的差別,其實很簡單,從字面上就可以了解。它們有一個共同的修飾詞“僞”,那麼“僞”是什麼意思呢?就是假的呗。是以,僞類就是假的類,僞元素就是假的元素,這就是在字面上它們之間的差別。下面我們再從定義上感受一下。
1.僞類
css2中給的定義 css僞類用于某些選擇器添加特殊的效果
css3中給的定義:僞類存在的意義是為了通過選擇器,格式化DOM樹以外的資訊以及不能被正常CSS選擇器擷取到的資訊。
僞類的功能有兩種:
- 擷取不存在與DOM樹中的資訊。比如
标簽的<a>
、:link
等,這些資訊不存在與DOM樹結構中,隻能通過CSS選擇器來擷取;visited
- 擷取不能被正常CSS選擇器擷取的資訊。比如僞類
,它的作用是比對文檔(頁面)的URI中某個标志符的目标元素,:target

2.僞元素
css2指出 僞元素用于某些選擇器設定特殊效果
僞元素可以建立一些文檔語言無法建立的虛拟元素。比如:文檔語言沒有一種機制可以描述元素内容的第一個字母或第一行,但僞元素可以做到(
::first-letter、::first-line
)。同時,僞元素還可以建立源文檔不存在的内容,比如使用
::before
或
::after
。
總結一下僞類與僞元素的特性及其差別:
- 僞類本質上是為了彌補正常CSS選擇器的不足,以便擷取到更多資訊;
- 僞元素本質上是建立了一個有内容的虛拟容器;
- CSS3中僞類和僞元素的文法不同;僞類用單冒号:表示;而僞元素用雙冒号::表示。一個選擇器可以同時使用多個僞類(但有的僞類會互斥);而一個選擇器隻能同時使用一個僞元素(未來的版本可能會支援多僞元素)。
- 可以同時使用多個僞類,而隻能同時使用一個僞元素;