詳解 CSS 屬性 偽類和偽元素的區別

2021-09-24 23:43:58 字數 1806 閱讀 4885

之前寫了一篇《詳解 css 屬性 -:before&&:after的博文,當時自己沒分清楚偽元素和偽類,所以在文章內把概念混淆了,慶幸 @riophae 兄指正了我的錯誤,所以今天打算好好研究下兩者的區別。

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

可以明確兩點,第一兩者都與選擇器相關,第二就是新增一些「特殊」的效果。這裡特殊指的是兩者描述了其他 css 無法描述的東西。

這裡用偽類:first-child和偽元素:first-letter來進行比較。

p>i:first-child

>

>

firsti

>

>

secondi

>

p>

//偽類 :first-child 新增樣式到第乙個子元素
如果我們不使用偽類,而希望達到上述效果,可以這樣做:

.first-child

>

class

="first-child"

>

firsti

>

>

secondi

>

p>

即我們給第乙個子元素新增乙個類,然後定義這個類的樣式。那麼我們接著看看為元素:

p:first-letter

>

i am stephen lee.p

>

//偽元素 :first-letter 新增樣式到第乙個字母
那麼如果我們不使用偽元素,要達到上述效果,應該怎麼做呢?

.first-letter

>

class

='first-letter'

>

ispan

>

am stephen lee.p

>

即我們給第乙個字母新增乙個span,然後給span增加樣式。

兩者的區別已經出來了。那就是:

偽類的效果可以通過新增乙個實際的類來達到,而偽元素的效果則需要通過新增乙個實際的元素才能達到,這也是為什麼他們乙個稱為偽類,乙個稱為偽元素的原因。

偽元素和偽類之所以這麼容易混淆,是因為他們的效果類似而且寫法相仿,但實際上css3為了區分兩者,已經明確規定了偽類用乙個冒號來表示,而偽元素則用兩個冒號來表示。

:pseudo-classes

::pseudo-elements

但因為相容性的問題,所以現在大部分還是統一的單冒號,但是拋開相容性的問題,我們在書寫時應該盡可能養成好習慣,區分兩者。

css偽類和偽元素屬性

對css中基本選擇器和屬性選擇器以及偽類選擇器做了總結,但是提到偽類,與之相對應的必然是偽元素。那麼,二者到底有什麼不能說的秘密呢?接下來 先歸類下兩者 偽類的種類 偽元素的種類 兩者的使用方法 css3為了區分兩者,已經明確規定了偽類用乙個冒號來表示,而偽元素則用兩個冒號來表示。pseudo cl...

詳解 CSS 屬性 偽類和偽元素的區別

之前寫了一篇 詳解 css 屬性 before after 的博文,當時自己沒分清楚偽元素和偽類,所以在文章內把概念混淆了,慶幸 riophae 兄指正了我的錯誤,所以今天打算好好研究下兩者的區別。首先,閱讀w3c對兩者的定義 可以明確兩點,第一兩者都與選擇器相關,第二就是新增一些 特殊 的效果。這...

詳解 CSS 屬性 偽類和偽元素的區別

css的元素選擇器除了根據id class 屬性 選取元素以外,還有很重要的一類,就是根據元素的特殊狀態來選取元素。它們就是偽類和偽元素。跟id選擇器 類選擇器 屬性選擇器以及派生選擇器等等這些從html文件層次結構 dom樹 中獲取元素不同的是,偽類和偽元素是預定義的 獨立於文件元素的。它們獲取元...