參考連接:css
https://segmentfault.com/a/1190000012156828?utm_source=tag-newesthtml
這裏說的很詳細了,因此我就直接搬過來了,僅作筆記使用。css3
css選擇器常見包括id(#id)、標籤(tag)、class(.class)、屬性[attr=attrval]等,還包括僞元素和僞類選擇器。正確的利用僞元素和僞類可以讓咱們的html結構更清晰合理,也能在必定程度上減小js對dom的操做!web
僞類包含兩種:狀態僞類和結構性僞類。segmentfault
狀態僞類是基於元素當前狀態進行選擇的。在與用戶的交互過程當中元素的狀態是動態變化的,所以該元素會根據其狀態呈現不一樣的樣式。當元素處於某狀態時會呈現該樣式,而進入另外一狀態後,該樣式也會失去。常見的狀態僞類主要包括:瀏覽器
結構性僞類是css3新增選擇器,利用dom樹進行元素過濾,經過文檔結構的互相關係來匹配元素,可以減小class和id屬性的定義,使文檔結構更簡潔。常見的包括:安全
僞元素是對元素中的特定內容進行操做,而不是描述狀態。它的操做層次比僞類更深一層,所以動態性比僞類低不少。實際上,僞元素就是選取某些元素前面或後面這種普通選擇器沒法完成的工做。控制的內容和元素是相同的,但它自己是基於元素的抽象,並不存在於文檔結構中!常見的僞元素選擇器包括:dom
有時你會發現僞類元素使用了兩個冒號 (::) 而不是一個冒號 (:),這是 CSS3 規範中的一部分要求,目的是爲了區分僞類和僞元素,大多數瀏覽器都支持這兩種表示方式。單冒號(:)用於 CSS3 僞類,雙冒號(::)用於 CSS3 僞元素。對於 CSS2 中已經有的僞元素,例如 :before,單冒號和雙冒號的寫法 ::before 做用是同樣的。網站
因此,若是你的網站只須要兼容 webkit、firefox、opera 等瀏覽器,建議對於僞元素採用雙冒號的寫法,若是不得不兼容 IE 瀏覽器,仍是用 CSS2 的單冒號寫法比較安全。firefox