類:在HTML中當表現class屬性的時候,人們可以用點(.)號來作為~=號的一個替代選擇,所以div.value等同於div[class~=value]。此時.value只能嚴格的應用於Html中的class屬性,所以此類選擇符叫類選擇符。
在CSS2.1中樣式通常依附與一個元素在文檔樹中的位置,這個簡單的模型對於許多情況來說是足夠的,但是一些常見的版式狀態不能應用於文檔樹的結構。例如,在Html中,沒有元素能夠引用一個段落的第一行,所以也沒有簡單的CSS選擇符應用它。
所以,CSS引進了偽類(pseudo-class)和偽元素(pseudo-element)來允許基於文檔樹以外信息的格式化。
偽類:偽類對元素進行分類是基於特征(characteristics)而不是它們的名字、屬性或者內容;原則上特征是不可以從文檔樹上推斷得到的。在感覺上偽類可以是動態的,當用戶和文檔進行交互的時候一個元素可以獲取或者失去一個偽類。例外的是”:first-child”能通過文檔樹推斷出來,”:lang”在一些情況下也在從文檔樹中推斷出來。
偽類有::first-child ,:link:,vistited,:hover:,active:focus,:lang
偽元素:偽元素是創造關於文檔語言能夠指定的文檔樹之外的抽象。例如文檔語言不能提供訪問元素內容第一字或者第一行的機制。偽元素允許設計師引用它們,否則這是難以辦到的。偽元素還提供樣式設計師給在源文檔中不存在的內容分配樣式(例如::before和:after能夠訪問產生的內容)。
偽元素有::first-line,:first-letter,:before,:after
偽類和偽元素都不出現在源文件和文檔樹中。
總結上面可以知道:
類選擇器可以看著屬性選擇符E[class~=className]在HTML應用中的一種快捷方式,從邏輯和功能上理解有傳統類的含義,其被Html元素預定義的屬性class引用,所以叫著類選擇器。 偽類可以獨立於文檔的元素來分配樣式,且可以分配給任何元素,邏輯上和功能上類類似,但是其是預定義的、不存在於文檔樹中且表達方式也不同,所以叫偽類。 偽元素所控制的內容和一個元素控制的內容一樣,但是偽元素不存在於文檔樹中,不是真正的元素,所以叫偽元素。