《轉載》詳解 CSS 屬性 - 僞類和僞元素的區別

首先,閱讀 w3c 對二者的定義:css

  • CSS 僞類用於向某些選擇器添加特殊的效果。
  • CSS 僞元素用於將特殊的效果添加到某些選擇器。

能夠明確兩點,第一二者都與選擇器相關,第二就是添加一些「特殊」的效果。這裏特殊指的是二者描述了其餘 css 沒法描述的東西。css3

僞類種類

僞元素種類

區別

這裏用僞類 :first-child 和僞元素 :first-letter 來進行比較。segmentfault

p>i:first-child {color: red}
<p>
    <i>first</i>
    <i>second</i>
</p>

//僞類 :first-child 添加樣式到第一個子元素
若是咱們不使用僞類,而但願達到上述效果,能夠這樣作:dom

.first-child {color: red}
<p>
    <i class="first-child">first</i>
    <i>second</i>
</p>

即咱們給第一個子元素添加一個類,而後定義這個類的樣式。那麼咱們接着看看爲元素:spa

p:first-letter {color: red}
<p>I am stephen lee.</p>

//僞元素 :first-letter 添加樣式到第一個字母
那麼若是咱們不使用僞元素,要達到上述效果,應該怎麼作呢?code

.first-letter {color: red}
<p><span class='first-letter'>I</span> am stephen lee.</p>

即咱們給第一個字母添加一個 span,而後給 span 增長樣式。
二者的區別已經出來了。那就是:對象

僞類的效果能夠經過添加一個實際的類來達到,而僞元素的效果則須要經過添加一個實際的元素才能達到,這也是爲何他們一個稱爲僞類,一個稱爲僞元素的緣由。blog

總結

僞元素和僞類之因此這麼容易混淆,是由於他們的效果相似並且寫法相仿,但實際上 css3 爲了區分二者,已經明確規定了僞類用一個冒號來表示,而僞元素則用兩個冒號來表示。element

:Pseudo-classes
::Pseudo-elements

但由於兼容性的問題,因此如今大部分仍是統一的單冒號,可是拋開兼容性的問題,咱們在書寫時應該儘量養成好習慣,區分二者。get

 

原文連接:http://www.javashuo.com/article/p-diaxzxtr-gu.html

 

權重比較:

僞元素的權重比僞類高,好比一個容器的爲元素和僞類都定義了同一屬性,但值不同,那麼將採用僞元素的。 從規範的角度僞元素一個頁面只使用一次,而僞類能夠屢次使用。僞元素產生新對象,在dom中看不到,可是能夠操做;僞類是dom中一個元素的不一樣狀態。

相關文章
相關標籤/搜索