css偽類及偽元素

CSS中偽類與偽元素的概念是很容易混淆的
今天就來談?wù)剛晤惻c偽元素之間的區(qū)別


定義

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

  • 偽類:用于向某些選擇器添加特殊的效果
  • 偽元素:用于將特殊的效果添加到某些選擇器

講道理逗爹,可能我語文不好幅虑,我覺得這兩句話是等價的 :-)
根本不能看出有什么區(qū)別
都是對某些選擇器“加特技”

標(biāo)準(zhǔn)有這么一句話翻譯過來是這樣的

CSS 引入偽類和偽元素的概念是為了實(shí)現(xiàn)基于文檔樹之外的信息的格式化

這話更抽象矛绘,其實(shí)意思就是對那些我們不能通過class比规、id等選擇元素的補(bǔ)充

區(qū)別

這個區(qū)別我們需要一個例子來理解

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

如果我們想要第一個em標(biāo)簽字體顏色變紅怎么做呢
使用我們熟悉的偽類很簡單

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

但是如果不存在偽類我們怎么做呢
這是我們就需要為第一個em標(biāo)簽添加類

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

可以實(shí)現(xiàn)同樣的效果


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

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

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

同樣假設(shè)偽元素不存在的情況
這時我們只能嵌套span標(biāo)簽來實(shí)現(xiàn)

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

看到這里浸赫,相信大家已經(jīng)清楚了為什么一個叫做偽類办斑,一個叫做偽元素
偽類的效果可以通過添加實(shí)際的類來實(shí)現(xiàn)
偽元素的效果可以通過添加實(shí)際的元素來實(shí)現(xiàn)
在CSS權(quán)重中偽元素相當(dāng)于元素扩灯、偽類相當(dāng)于類
它們的本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素

歷史

偽類最開始的時候只是用來表示元素的動態(tài)(典型的錨偽類link牵署、visited疚颊、hover狈孔、active)
在CSS2標(biāo)準(zhǔn)中對它進(jìn)行了擴(kuò)展讓它雖然邏輯存在但不需要在DOM樹中標(biāo)識
偽元素代表了某個元素的子元素,雖然邏輯存在材义,但不存在于DOM樹

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

偽類只能使用“:”均抽,而偽元素既可以使用“:”,也可以使用“::”
這里我就解釋一下為什么


CSS3中的標(biāo)準(zhǔn)是偽類使用單冒號“:”
而偽元素使用雙冒號“::”(避免混淆)
但是在此之前無論是偽類還是偽元素都使用單冒號“:”
所以為了保證兼容偽元素兩種使用方法都是可以的
但是低版本IE有雙冒號兼容問題
所以以前編寫樣式的人們對于偽類和偽元素就干脆統(tǒng)統(tǒng)使用單冒號
導(dǎo)致這種混淆一直延續(xù)下來

注意

在使用偽類和偽元素的時候
有一點(diǎn)要特別注意
偽類就像真正的類一樣其掂,可以疊加使用
沒有數(shù)量上限油挥,只要不是互斥的
比如這樣

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

這是完全可以的
但注意,這里是“與”的關(guān)系
也就是說既要滿足“first-child”第一個子元素
又要滿足“hover”光標(biāo)懸浮


偽元素就要嚴(yán)格的多
偽元素在一個選擇器中只能出現(xiàn)一次款熬,并且只能出現(xiàn)在末尾
(這里有人誤會了深寥,所以我作出了修改)
像下面的樣式是無法生效的

p::first-letter:hover {  /*錯誤的寫法:偽元素不是末尾*/
    color: red;
}
p::first-letter::selection {  /*錯誤的寫法:偽元素出現(xiàn)了多個*/
    color: red;
}

再多說一句關(guān)于它們的優(yōu)先級
在計(jì)算權(quán)重的時候
偽類與類優(yōu)先級相同
偽元素與標(biāo)簽優(yōu)先級相同

總結(jié)

  • 偽類與偽元素都是用于向選擇器加特殊效果
  • 偽類與偽元素的本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素
  • 偽類只要不是互斥可以疊加使用
  • 偽元素在一個選擇器中只能出現(xiàn)一次,并且只能出現(xiàn)在末尾
  • 偽類與偽元素優(yōu)先級分別與類贤牛、標(biāo)簽優(yōu)先級相同
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惋鹅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子殉簸,更是在濱河造成了極大的恐慌闰集,老刑警劉巖沽讹,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異返十,居然都是意外死亡妥泉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門洞坑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盲链,“玉大人,你說我怎么就攤上這事迟杂」粽矗” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵排拷,是天一觀的道長侧漓。 經(jīng)常有香客問我,道長监氢,這世上最難降的妖魔是什么布蔗? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮浪腐,結(jié)果婚禮上纵揍,老公的妹妹穿的比我還像新娘。我一直安慰自己议街,他們只是感情好泽谨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著特漩,像睡著了一般吧雹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涂身,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天雄卷,我揣著相機(jī)與錄音,去河邊找鬼蛤售。 笑死龙亲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悍抑。 我是一名探鬼主播鳄炉,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搜骡!你這毒婦竟也來了拂盯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤记靡,失蹤者是張志新(化名)和其女友劉穎谈竿,沒想到半個月后团驱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡空凸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年嚎花,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呀洲。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡紊选,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出道逗,到底是詐尸還是另有隱情兵罢,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布滓窍,位于F島的核電站卖词,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吏夯。R本人自食惡果不足惜此蜈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望噪生。 院中可真熱鬧裆赵,春花似錦、人聲如沸杠园。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抛蚁。三九已至,卻和暖如春惕橙,著一層夾襖步出監(jiān)牢的瞬間瞧甩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工弥鹦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肚逸,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓彬坏,卻偏偏與公主長得像朦促,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子栓始,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案务冕? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,760評論 1 92
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/239原文:http...
    極樂君閱讀 7,378評論 1 62
  • 定義 首先先來看看偽類與偽元素的定義w3c中對于它們是這么解釋的 CSS中偽類與偽元素的概念是很容易混淆的,今天就...
    讀書的魚閱讀 876評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)幻赚,斷路器禀忆,智...
    卡卡羅2017閱讀 134,707評論 18 139
  • 誰年輕的時候不是一貧如洗箩退, 誰年輕的時候不是彷徨前行离熏。 早幾日前,就想寫點(diǎn)東西戴涝,作為對2017的一種告別滋戳。 告別,...
    石敬之PPT筆記閱讀 893評論 0 0