在CSS2.1里,5.10 Pseudo-elements and pseudo-classes 描述了這兩個概念的由來,它們是被一同提及的。但到了 Selector Level 3 里,它們就被分開到兩個小節里加以區分。但無論如何,偽類和偽元素的引入都是因為在文檔樹里有些信息無法被充分描述,比如CSS沒有“段落的第一行”之類的選擇器,而這在一些出版場景里又是必須的。用標準里的話說: CSS introduces the concepts of pseudo-elements and pseudo-classes to permit formatting based on information that lies outside the document tree. 簡單翻譯一下,就是: CSS 引入偽類和偽元素的概念是為了實現基于文檔樹之外的信息的格式化 這么說很抽象,其實就是為了描述一些現有CSS無法描述的東西。缺少什么,則引入什么,不管是標準,還是人,都是如此成長而來。