搜尋
首頁web前端css教學關於CSS3中的偽類與偽元素的區別及注意事項

CSS中偽類別與偽元素的概念是很容易混淆的 

今天就來談談偽類與偽元素的差異


定義

首先先來看看偽類別與偽元素的定義
w3c中對於它們是這麼解釋的

  • 偽類:用於為某些選擇器新增特殊的效果

  • 偽元素:用於將特殊的效果新增至某些選擇器

講道理,可能我語文不好,我覺得這兩句話是等價的:-)
根本不能看出有什麼區別
都是對某些選擇器「加特技」

標準有這麼一句話翻譯過來是這樣的

CSS 引入偽類和偽元素的概念是為了實現基於文檔樹以外的資訊的格式化

這話更抽象,其實意思就是對那些我們不能透過class、id等選擇元素的補充

區別

這個差異我們需要一個例子來理解

<p>
    <em>This</em>
    <em>is a text</em></p>

#如果我們想要第一個em標籤字體顏色變紅怎麼做呢
使用我們熟悉的偽類別很簡單

em:first-child {    color: red;}

但是如果不存在偽類別我們怎麼做呢
這是我們就需要為第一個em標籤添加類別

<p>
    <em class="first-child">This</em>
    <em>is a text</em></p>
em.first-child {    color: red;}

可以實現同樣的效果


<p>
    <em>This</em>
    <em>is a text</em></p>

還是這個例子
現在我想讓這個段落的第一個字母變紅
怎麼做呢
這回我們需要使用偽元素

p::first-letter {    color: red;}

同樣假設偽元素不存在的情況
這時我們只能嵌套span標籤來實現

<p>
    <em><span>T</span>his</em>
    <em>is a text</em></p>
p span {    color: red;}

看到這裡,相信大家已經清楚了為什麼一個叫做偽類,一個叫做偽元素
偽類的效果可以透過添加實際的類來實現
偽元素的效果可以透過加入實際的元素來實現
它們的本質差異就是是否抽象創造了新元素

的歷史

偽類別最開始的時候只是用來表示元素的動態(典型的錨偽類link、visited、hover、active)
在CSS2標準中對它進行了擴展讓它雖然邏輯存在但不需要在DOM樹中標識
偽元素代表了某個元素的子元素,雖然邏輯存在,但不存在於DOM樹

雖然它們的概念很容易被我們混淆
但是也不影響我們正常使用

我在CSS3選擇器介紹及用法總結中說過
偽類只能使用“:”
而偽元素既可以使用“:”,也可以使用“::”
這裡我就解釋一下為什麼


CSS3中的標準是偽類使用單冒號“:”
而偽元素使用雙冒號“::”(避免混淆)
但是在此之前無論是偽類還是偽元素都使用單冒號“:”
所以為了確保兼容偽元素兩種使用方法都是可以的
但是低版本IE有雙冒號兼容問題
所以以前編寫樣式的人們對於偽類和偽元素就乾脆統統使用單冒號
導致這種混淆一直延續下來

注意

#在使用偽類和偽元素的時候
有一點要特別注意
偽類別就像真正的類別一樣,可以疊加使用
沒有數量上限,只要不是互斥的
比如這樣

em:first-child:hover {    color: red;}

這是完全可以的
但注意,這裡是「與」的關係
也就是說既要滿足「first-child」第一個子元素
又要滿足「hover」遊標懸浮


##偽元素就要嚴格的多


偽元素在一個選擇器中只能出現一次,並且只能出現在末尾 (這裡有同學誤會了,所以我作出了修改)
像下面的樣式是無法生效的

p::first-letter:hover {  /*错误的写法:伪元素不是末尾*/
    color: red;}
p::first-letter::selection {  /*错误的写法:伪元素出现了多个*/
    color: red;}


再多說一句關於它們的

優先權 在計算權重的時候
偽類別與類別優先權相同
偽元素與標籤優先權相同

總結

  • 偽類別與偽元素都是用來為選擇器加上特殊效果

  • #偽類別與偽元素的本質差異就是是否抽象創造了新元素

  • #偽類別只要不是互斥可以疊加使用

  • #偽元素在一個選擇器中只能出現一次,且只能出現在結尾

  • 偽類別與偽元素優先權分別與類別、標籤優先權相同

以上是關於CSS3中的偽類與偽元素的區別及注意事項的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
丟失的CSS技巧cohost.org丟失的CSS技巧cohost.orgApr 25, 2025 am 09:51 AM

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

CSS-tricks編年史XLIIICSS-tricks編年史XLIIIApr 23, 2025 am 09:35 AM

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

tailwind的@Apply功能比聽起來更好tailwind的@Apply功能比聽起來更好Apr 23, 2025 am 09:23 AM

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具