偽類和偽元素的區別

2021-09-20 15:08:43 字數 1135 閱讀 4594

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

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

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

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

p>i:first-child first

second

:first-child新增樣式到第乙個子元素

如果我們不使用偽類,而希望達到上述效果,可以這樣做:

.first-child first

second

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

p:first-letter i am stephen lee.

:first-letter新增樣式到第乙個字母

那麼如果我們不使用偽元素,要達到上述效果,應該怎麼做呢?

.first-letter i am stephen lee.

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

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

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

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

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

偽類和偽元素區別

偽類是向某些選擇器新增特殊的效果,可以通過新增乙個類來達到,用乙個冒號來表示。pseudo classes 如 first child,link visiter hover active focus lang 偽類類似於class,表示一些元素的狀態,但無需標識的分類。偽元素是將特殊的效果新增到某些...

偽類和偽元素的區別

個人的關注點可能主要集中在js方向上,但是本著css也不能丟掉的原則,所以上網查了些css方面的困惑點,這一篇的主題是 偽類和偽元素。偽類和偽元素的根本區別在於 它們是否創造了新的元素 抽象 從我們模仿其意義的角度來看,如果需要新增新元素加以標識的,就是偽元素,反之,如果只需要在既有元素上新增類別的...

偽類和偽元素的區別

學習這麼長時間對於一些基本點還是不太理解,所以在這裡進行了區分 第一種理解偽類用於向某些選擇器新增特殊的效果。偽元素用於將特殊的效果新增到某些選擇器。第二種理解 偽類的效果可以通過新增乙個實際的類來達到,而偽元素的效果則需要通過新增乙個實際的元素才能達到,這也是為什麼他們乙個稱為偽類,乙個稱為偽元素...