在平時工作中用到僞類選擇器的時候一個冒號和兩個冒號貌似都是可以的,所以兩者到底有什麼區別呢,我們先來看下W3C關於CSS3選擇器的規範中有一段描述:
A pseudo-element is made of two colons (::)followed by the name of the pseudo-element.
This :: notation is introduced by the current document in order to establish a discrimination between pseudo-classes and pseudo-elements. For compatibility with existing style sheets, user agents must also accept the previous one-colon notation for pseudo-elements introduced in CSS levels 1 and 2 (namely, :first-line, :first-letter, :before and :after). This compatibility is not allowed for the new pseudo-elements introduced in CSS level 3.
翻譯:僞元素由雙冒號
和僞元素
名稱組成。雙冒號是在當前規範中引入的,用於區分僞類
和僞元素
。但是僞類兼容現存樣式,瀏覽器需要同時支持舊的僞類,比如:first-line、:first-letter、:before、:after等。
那麼問題來了,什麼是僞類?什麼是僞元素?
首先,閱讀 w3c 對兩者的定義:
CSS 僞類用於向某些選擇器添加特殊的效果。
CSS 僞元素用於將特殊的效果添加到某些選擇器。
可以明確兩點,第一兩者都與選擇器相關,第二就是添加一些“特殊”的效果。這裏特殊指的是兩者描述了其他 css 無法描述的東西。
僞類種類
僞元素種類
重點: 僞類
偏向於元素的動作行爲
,僞元素
偏向於元素的屬性
。實際上 css3 爲了區分兩者,已經明確規定了僞類用一個冒號
來表示,而僞元素則用兩個冒號
來表示。對於CSS2之前已有的僞元素,比如:before,單冒號和雙冒號的寫法::before作用是一樣的。
有的網站建議說,如果你的網站只需要兼容webkit、firefox、opera等瀏覽器,建議對於僞元素採用雙冒號的寫法,如果不得不兼容IE瀏覽器,還是用CSS2的單冒號寫法比較安全
。如果自己不確定的話可以針對某些需要兼容的屬性有兩種屬性。