溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

css偽類和偽對象的區(qū)別是什么

發(fā)布時(shí)間:2022-12-30 09:15:55 來源:億速云 閱讀:101 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“css偽類和偽對象的區(qū)別是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“css偽類和偽對象的區(qū)別是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

偽類是用于向某些選擇器添加特殊效果的;偽元素是用于將特殊的效果添加到某些選擇器的。偽類的效果可以通過添加實(shí)際的類來實(shí)現(xiàn);偽對象的效果可以通過添加實(shí)際的元素來實(shí)現(xiàn)。簡單來說,它們的本質(zhì)區(qū)別為是否抽象創(chuàng)造了新元素。

其中偽類和偽元素(偽對象)的根本區(qū)別在于:它們是否創(chuàng)造了新的元素。

偽元素/偽對象:不存在在DOM文檔中,是虛擬的元素,是創(chuàng)建新元素。代表某個(gè)元素的子元素,這個(gè)子元素雖然在邏輯上存在,但卻并不實(shí)際存在于文檔樹中。

偽對象選擇符

Properties
屬性
CSS Version
版本
Inherit From Parent
繼承性
Description
簡介
E:first-letter/E::first-letterCSS3/CSS1CSS2/CSS1 E:first-letter/E::first-letter 偽對象選擇符,設(shè)置對象內(nèi)的第一個(gè)字符的樣式。
E:first-line/E::first-lineCSS3/CSS1CS3/CSS1 偽對象選擇符 E:first-line/E::first-line,設(shè)置對象內(nèi)的第一行的樣式。
E:before/E::beforeCSS3/CSS2CSS3/CSS3 偽對象選擇符 E:before/E::before,設(shè)置在對象前(依據(jù)對象樹的邏輯結(jié)構(gòu))發(fā)生的內(nèi)容。用來和content屬性一起使用
E:after/E::afterCSS3/CSS2CSS3/CSS2 偽對象選擇符 E:after/E::after,設(shè)置在對象后(依據(jù)對象樹的邏輯結(jié)構(gòu))發(fā)生的內(nèi)容。用來和content屬性一起使用
E::selectionCSS3CSS3 偽對象選擇符 E::selection,設(shè)置對象被選擇時(shí)的顏色。

偽類:存在DOM文檔中,邏輯上存在但在文檔樹中卻無須標(biāo)識的“幽靈”分類。

偽類選擇符

Properties
屬性
CSS Version
版本
Inherit From Parent
繼承性
Description
簡介
E:linkCSS1CSS1 偽類選擇符 E:link ,設(shè)置超鏈接a在未被訪問前的樣式。
E:visitedCSS1CSS1 偽類選擇符 E:visited,設(shè)置超鏈接a在其鏈接地址已被訪問過時(shí)的樣式。
E:hoverCSS2CSS2/CSS1 偽類選擇符 E:hover,設(shè)置元素在其鼠標(biāo)懸停時(shí)的樣式。
E:activeCSS2/CSS1CSS2/CSS1 偽類選擇符 E:active,設(shè)置元素在被用戶激活(在鼠標(biāo)點(diǎn)擊與釋放之間發(fā)生的事件)時(shí)的樣式。
E:focusCSS2/CSS1CSS2/CSS1 偽類選擇符 E:focus,設(shè)置元素在成為輸入焦點(diǎn)(該元素的onfocus事件發(fā)生)時(shí)的樣式。
E:lang()CSS2CSS2 偽類選擇符 E:lang() 匹配使用特殊語言的E元素。
E:not()CSS3CSS3 偽類選擇符 E:not() 匹配不含有s選擇符的元素E。
E:rootCSS3CSS3 偽類選擇符 E:root,匹配E元素在文檔的根元素。
E:first-childCSS2CSS2 偽類選擇符 E:first-child 匹配父元素的第一個(gè)子元素E。
E:last-childCSS3CSS3 偽類選擇符 E:last-child 匹配父元素的最后一個(gè)子元素E。
E:only-childCSS3CSS3 為例選擇符 E:only-child 匹配父元素僅有的一個(gè)子元素E。
E:nth-child(n)CSS3CSS3 偽類選擇符 E:nth-child(n) 匹配父元素的第n個(gè)子元素E。
E:nth-last-child(n)CSS3CSS3 偽類選擇符 E:nth-last-child(n) 匹配父元素的倒數(shù)第n個(gè)子元素E。
E:first-of-typeCSS2CSS3 偽類選擇符 E:first-of-type 匹配同類型中的第一個(gè)同級兄弟元素E。
E:last-of-typeCSS3CSS3 偽類選擇符 E:last-of-type 匹配同類型中的最后一個(gè)同級兄弟元素E。
E:only-of-typeCSS3CSS3 偽類選擇符 E:only-of-type,匹配同類型中的唯一的一個(gè)同級兄弟元素E。
E:nth-of-type(n)CSS3CSS3 偽類選擇符 E:nth-of-type(n),匹配同類型中的第n個(gè)同級兄弟元素E。
E:nth-last-of-type(n)CSS3CSS3 偽類選擇符 E:nth-last-of-type(n) 匹配同類型中的倒數(shù)第n個(gè)同級兄弟元素E。
E:emptyCSS3CSS3 偽類選擇符 E:empty 匹配沒有任何子元素(包括text節(jié)點(diǎn))的元素E。
E:checkedCSS3CSS3 偽類選擇符 E:checked 匹配用戶界面上處于選中狀態(tài)的元素E。(用于input type為radio與checkbox 的form元素)
E:enabledCSS3CSS3 偽類選擇符 E:enabled 匹配用戶界面上處于可用狀態(tài)的元素E。
E:disabledCSS3CSS3 偽類選擇符 E:disabled 匹配用戶界面上處于禁用狀態(tài)的元素E。
E:targetCSS3CSS3 偽類選擇符 E:target 匹配相關(guān)URL指向的E元素。
@page:firstCSS2CSS2 偽類選擇符 @page:first 設(shè)置頁面容器第一頁使用的樣式。僅用于@page規(guī)則
@page:leftCSS2CSS2 偽類選擇符 @page:left 置頁面容器位于裝訂線左邊的所有頁面使用的樣式。僅用于@page規(guī)則
@page:rightCSS2CSS2 為對象選擇符 @page:right 設(shè)置頁面容器位于裝訂線右邊的所有頁面使用的樣式。僅用于@page規(guī)則

再看看W3C中對于二者應(yīng)用的描述:

偽類:用于向某些選擇器添加特殊的效果
偽元素:用于將特殊的效果添加到某些選擇器
其實(shí)根本意思就是就是對那些不能通過class、id等選擇元素的補(bǔ)充

舉個(gè)栗子:

<div>
    <p>a</p>
    <p>b c</p>
</div>

如果我們想要第一個(gè)p標(biāo)簽字體顏色變紅怎么做呢 使用偽類就會(huì)很簡單:

p:first-child {
    color: red;
}

但是如果不用偽類我們怎么做呢? 這時(shí)我們就需要為第一個(gè)p標(biāo)簽添加一個(gè)類class

<div>
    <p class="first-child">a</p>
    <p>b c</p>
</div>
p:first-child {
    color: red;
}

可以實(shí)現(xiàn)同樣的效果,但是需要多寫一個(gè)類

如果使用偽元素該如何實(shí)現(xiàn)上述操作呢?

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

如果不用偽元素我們怎么做呢?

<div>
    <p><span>a</span></p>
    <p>b c</p>
</div>
p span {
    color: red;
}

可以看出二者區(qū)別了,

偽類的效果可以通過添加實(shí)際的類來實(shí)現(xiàn)

偽元素的效果可以通過添加實(shí)際的元素來實(shí)現(xiàn)

所以它們的本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素

注意:

偽類只能使用“:

而偽元素既可以使用“:”,也可以使用“::

因?yàn)閭晤愂穷愃朴谔砑宇愃钥梢允嵌鄠€(gè),而偽元素在一個(gè)選擇器中只能出現(xiàn)一次,并且只能出現(xiàn)在末尾

相關(guān)問題

:after/::after和:before/::before的異同

相同點(diǎn):

都可以用來表示偽類對象,用來設(shè)置對象前的內(nèi)容

:before和::before寫法是等效的; :after和::after寫法是等效的

不同點(diǎn):

:before/:after是Css2的寫法,::before/::after是Css3的寫法

:before/:after 的兼容性要比::before/::after好 ,

不過在H5開發(fā)中建議使用::before/::after比較好

注意:

偽對象要配合content屬性一起使用

偽對象不會(huì)出現(xiàn)在DOM中,所以不能通過js來操作,僅僅是在 CSS 渲染層加入

偽對象的特效通常要使用:hover偽類樣式來激活

eg:當(dāng)鼠標(biāo)移在span上時(shí),span前插入”duang”

<style>
span{
  background: yellow;
}
span:hover::before{
  content:"duang";
}
</style>
 
<span>222</span>

讀到這里,這篇“css偽類和偽對象的區(qū)別是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

css
AI