今年看到一個這樣的面試題;《:before和::before的區別》到時就有點迷糊了平時寫的時候都是用單引號的也沒有仔細去查看有什么具體區別
::before 是一個偽類元素,代表生成的內容元素,表示相應元素的可抽象樣式的第一個子元素,即:所選元素的第一個子元素 利用::before可以把需插入的內容插入到元素的其他內容之前,並且默認內聯顯示。::before需要使用content屬性來指定內容的值。
區別:
單冒號(:)用於CSS3偽類,雙冒號(::)用於CSS3偽元素。偽元素和偽類之所以這么容易混淆,是因為他們的效果類似而且寫法相仿,但實際上 css3
為了區分兩者,已經明確規定了偽類用一個冒號來表示,而偽元素則用兩個冒號來表示。但因為兼容性的問題,所以現在大部分還是統一的單冒號,但是拋開兼容性的問題,我們在書寫時應該盡可能養成好習慣,區分兩者。
雙冒號是在當前規范中引入的,用於區分偽類和偽元素。不過瀏覽器需要同時支持舊的已經存 在的偽元素寫法,比如:first-line、:first-letter、:before、:after等,而新的在CSS3中引入的偽元素則不允許再支持舊的單冒號的寫法。
那么現在就可以完整的回答標題中的問題了,對於CSS2之前已有的偽元素,比如:before,單冒號和雙冒號的寫法::before作用是一樣的。
所以,如果你的網站只需要兼容webkit、firefox、opera等瀏覽器,建議對於偽元素采用雙冒號的寫法,如果不得不兼容IE瀏覽器,還是用CSS2的單冒號寫法比較安全。