CSS選擇器與優(yōu)先級(jí)

一、CSS選擇器

CSS中選擇器是一種模式岩四,用于選擇需要添加樣式的元素哭尝。

選擇器的基本結(jié)構(gòu)如下

x {
    background: red;
}

其中,x是選擇器可以是類(lèi)剖煌,ID材鹦,元素類(lèi)型等等,下面會(huì)具體探討耕姊,后面的花括號(hào)為聲明塊桶唐,對(duì)元素樣式的聲明都包含在其中,每一個(gè)屬性聲明用分號(hào);隔開(kāi)茉兰。

二尤泽、CSS選擇器類(lèi)別

CSS中選擇器主要分為以下幾種:

  1. 標(biāo)簽選擇器
  2. ID選擇器
  3. 類(lèi)選擇器
  4. 通用選擇器
  5. 組合選擇器
  6. 繼承選擇器
  7. 偽類(lèi)選擇器
  8. 屬性選擇器

基本的選擇器此處不做贅述,只寫(xiě)幾個(gè)特殊的规脸。

2.1 后代選擇器
.class_name div {
    background: red;
}

這里為類(lèi)名為.class_name的元素包含的所有后代div元素設(shè)定樣式坯约,且只針對(duì)其后代不影響同級(jí)或更高級(jí)以及其后代div元素。如果我們將下面代碼制定這樣的CSS樣式的話(huà)莫鸭,會(huì)發(fā)現(xiàn)這里面的子級(jí)div和孫級(jí)div都會(huì)被設(shè)置為紅色背景闹丐。

<div class=".class_name">
    <div class="">
        <div class="">
        </div>
    </div>
</div>

有時(shí)候并不需要將所有的后代元素都設(shè)置同一個(gè)樣式,比如上面這段被因,我只想將子級(jí)div設(shè)置為紅色背景卿拴,而孫級(jí)div并不想套用這樣的樣式,顯然梨与,后代選擇器不適應(yīng)與這種情況堕花,這里可以使用子元素選擇器

.class_name > div {
    background: red;
}

如上所示粥鞋,子元素選擇器比后代選擇器多了一個(gè)大于號(hào)>缘挽,表示直接做用于子元素,不會(huì)應(yīng)用的子級(jí)以后的元素呻粹。如果將上面的那段HTML應(yīng)用這個(gè)CSS樣式的話(huà)到踏,只用第二層的div元素被設(shè)置為紅色,而最里面的div元素不會(huì)套用這種樣式尚猿。

2.2 偽類(lèi)選擇器

偽類(lèi)選擇器很有意思,利用它可以為HTML文檔中一些也許存在楣富,也許不存在的元素結(jié)構(gòu)指定樣式凿掂。它不像其他選擇器利用元素類(lèi)型、ID或者class等來(lái)為元素指定樣式,而是用條件選擇來(lái)指定庄萎。具體屬性看下表:

選擇器 含義
E:first-child 選擇父元素的第一個(gè)子元素
E:link 匹配所有未被訪(fǎng)問(wèn)的超鏈接
E:visited 匹配所有已經(jīng)被訪(fǎng)問(wèn)的超鏈接
E:active 匹配鼠標(biāo)按下還未被釋放的元素
E:hover 匹配鼠標(biāo)當(dāng)前懸停的元素
E:focus 匹配獲得焦點(diǎn)的元素
E:lang(c) 匹配lang值等于c或者有多個(gè)用-隔開(kāi)的單詞構(gòu)成lang值踪少,且其中包含等于c的單詞塊的元素

以上是常用的偽類(lèi)選擇器,具體說(shuō)明在表中不再贅述糠涛。

2.3 屬性選擇器

屬性選擇器是經(jīng)常用到的選擇器援奢,應(yīng)用范圍寬泛,也非常實(shí)用忍捡。下面用一個(gè)表格列出集漾。

選擇器 含義
E[attribute] 匹配有attribute屬性的元素,不考慮其他因素砸脊,也可以省略直接匹配所有類(lèi)型元素
E[attribute =val] 匹配所有attribute屬性等于val的元素
E[attribute ~=val] 匹配所有attribute屬性值中有多個(gè)用空格隔開(kāi)的值具篇,其中包含“val”的元素
E[attribute |=val] 匹配所有 att 屬性具有多個(gè)連字號(hào)分隔(hyphen-separated)且以 “val” 開(kāi)頭的元素,主要用于 lang 屬性凌埂,比如 “en”驱显、“en-us”、“en-gb” 等等

選擇器暫且介紹這么多瞳抓,基礎(chǔ)的選擇器想必早已爛熟于心埃疫,就不贅述了。

三孩哑、優(yōu)先級(jí)與權(quán)重

設(shè)想一種情況:
一個(gè)div長(zhǎng)這個(gè)樣子

<div class=".class_name">

</div>

嗯栓霜,只是一個(gè)簡(jiǎn)單的不能再簡(jiǎn)單的div,再來(lái)一個(gè)CSS

.class_name {background: red;}
div {background: green;}
* {background: yellow;}

這有點(diǎn)腦殼疼了臭笆,一下給那么多選擇器設(shè)置樣式叙淌,到底會(huì)變成什么背景色呢?這里引出一個(gè)選擇器特殊性的概念愁铺,元素會(huì)根據(jù)選擇性的特殊性來(lái)決定所應(yīng)用樣式的次序鹰霍,特殊性更高的規(guī)則樣式將會(huì)被優(yōu)先運(yùn)用。

選擇器的特殊性由選擇器本身的組件確定茵乱。特殊性值表述為4各部分:0,0,0,0茂洒。可以看做是一個(gè)四位數(shù)瓶竭,一個(gè)初始情況下等于0的四位數(shù)督勺,具體特殊性規(guī)則如下:

  • 對(duì)于內(nèi)聯(lián)樣式的聲明,其權(quán)重為1000
  • 對(duì)于ID選擇器斤贰,其權(quán)重為100
  • 對(duì)于類(lèi)選擇器智哀、屬性選擇、偽類(lèi)選擇荧恍,其權(quán)重為10
  • 對(duì)于類(lèi)型選擇器瓷叫、為元素屯吊,其權(quán)重為1
  • 結(jié)合符、通配符沒(méi)有特殊性貢獻(xiàn)

下面給出幾個(gè)簡(jiǎn)單的例子:

#id {background: red;}  //0,1,0,0
.class_name {background: green;}  //0,0,1,0
* {background: yellow;}  //0,0,0,0
.class_name #id {color:blue;}  //0,1,1,0
p em {background: yellow;}  //0,0,0,2
div#id *[href] {background: yellow;}  //0,1,1,1

需要注明的是摹菠,有時(shí)候我們需要一個(gè)元素權(quán)重特別大盒卸,大到任何選擇器都無(wú)法影響的地步。重要聲明可以滿(mǎn)足要求次氨,它長(zhǎng)這樣:!important蔽介,形象一點(diǎn)說(shuō)!important的權(quán)重約等于無(wú)窮。下面是它的用法

.class_name {
    background: red !important;
    }

在一條聲明的后面煮寡,分號(hào)前插入一個(gè)!impotant即可虹蓄,如果有多條聲明需要重要,那么每一條都要寫(xiě)洲押。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末武花,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子杈帐,更是在濱河造成了極大的恐慌体箕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挑童,死亡現(xiàn)場(chǎng)離奇詭異累铅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)站叼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)娃兽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人尽楔,你說(shuō)我怎么就攤上這事投储。” “怎么了阔馋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵玛荞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呕寝,道長(zhǎng)勋眯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任下梢,我火速辦了婚禮客蹋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孽江。我一直安慰自己讶坯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布岗屏。 她就那樣靜靜地躺著闽巩,像睡著了一般钧舌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涎跨,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音崭歧,去河邊找鬼隅很。 笑死,一個(gè)胖子當(dāng)著我的面吹牛率碾,可吹牛的內(nèi)容都是我干的叔营。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼所宰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绒尊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仔粥,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤婴谱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后躯泰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谭羔,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年麦向,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘟裸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诵竭,死狀恐怖话告,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卵慰,我是刑警寧澤沙郭,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站呵燕,受9級(jí)特大地震影響棠绘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜再扭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一氧苍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泛范,春花似錦让虐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)对扶。三九已至,卻和暖如春惭缰,著一層夾襖步出監(jiān)牢的瞬間浪南,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工漱受, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留络凿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓昂羡,卻偏偏與公主長(zhǎng)得像絮记,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虐先,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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