css的偽類(lèi)和偽元素在我們平常的工作中有著很廣泛的應(yīng)用,比如:hover舆乔、:active岳服、:after等等,但是大部分人可能并不清楚偽類(lèi)和偽元素的具體區(qū)別希俩,所以我們今天來(lái)簡(jiǎn)單的梳理一下吊宋。
css偽類(lèi)的定義
由于css2.1中偽類(lèi)和偽元素的定位并無(wú)區(qū)別,所以我們直接引用css3中對(duì)于偽類(lèi)的定義(引入來(lái)源w3c)
定義:
引入偽類(lèi)概念是用于選擇不存在于DOM樹(shù)中的信息或那些不能夠通過(guò)常規(guī)css選擇器得到的信息颜武。(比如:hover,:active就屬于不在于dom中的信息璃搜,nth-child()屬于不能夠通過(guò)常規(guī)css選擇器得到的信息)
偽類(lèi)由“冒號(hào)”(:)+偽類(lèi)的名稱(chēng)和偽類(lèi)括號(hào)內(nèi)的可選參數(shù)組成。(偽類(lèi)括號(hào)內(nèi)的可選參數(shù)指:nth-child(n)里的n)
所有的常規(guī)選擇器都可以在任何位置使用偽類(lèi)鳞上。偽類(lèi)名稱(chēng)不區(qū)分大小寫(xiě)这吻。一些偽類(lèi)是互斥的,另一些偽類(lèi)可以同時(shí)應(yīng)用于同一個(gè)元素篙议。為了滿(mǎn)足用戶(hù)在操作DOM時(shí)產(chǎn)生的DOM結(jié)構(gòu)改變唾糯,偽類(lèi)可以是動(dòng)態(tài)的。
css偽元素的定義
定義:
偽元素用于創(chuàng)建和訪(fǎng)問(wèn)文檔中不存在的抽象元素鬼贱。例如移怯,文檔語(yǔ)言不提供訪(fǎng)問(wèn)元素內(nèi)容的第一個(gè)字母或第一行的機(jī)制。使用偽元素可以訪(fǎng)問(wèn)到這些这难。偽元素還可以讓我們?cè)L問(wèn)文檔中原本不存在的抽象元素(例如舟误,::before和::after)。
偽元素由兩個(gè)冒號(hào)(::)后跟偽元素的名稱(chēng)組成姻乓。
::兩個(gè)冒號(hào)這種格式嵌溢,是為了區(qū)別偽類(lèi)和偽元素。與現(xiàn)有樣式表的兼容性蹋岩,考慮到兼容性有部分偽元素可以同時(shí)使用1個(gè)或者2個(gè)冒號(hào)堵腹,(即:first-line,:first-letter星澳,:before和:after)疚顷。對(duì)于css3中引入的新偽元素,則必須要使用2個(gè)冒號(hào)。
每個(gè)選擇器只能出現(xiàn)一個(gè)偽元素腿堤,并且偽元素要位于選擇器的后面阀坏。注意:此規(guī)范的未來(lái)版本可能允許每個(gè)選擇器使用多個(gè)偽元素。
css偽類(lèi)和偽元素的區(qū)別
偽類(lèi)和偽元素的語(yǔ)法結(jié)構(gòu)不同笆檀,偽類(lèi)為冒號(hào)(:)加偽類(lèi)名稱(chēng)忌堂,偽元素為兩個(gè)冒號(hào)(::)加偽元素名稱(chēng),不過(guò)為了考慮兼容性(css2.1中偽類(lèi)和偽元素都是一個(gè)冒號(hào))酗洒,部分偽元素也支持一個(gè)冒號(hào)的寫(xiě)法士修,例如(:after,:before,:first-line,:first-letter)。
一個(gè)選擇器只能使用一個(gè)偽元素樱衷,但是可以使用多個(gè)偽類(lèi)棋嘲。
偽類(lèi)和偽元素的優(yōu)先級(jí)不同,大部分偽類(lèi)為0-1-0矩桂,偽元素則為0-0-1沸移。參考css選擇器的優(yōu)先級(jí)https://www.chentugen.com/archives/12/