国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

關(guān)于 CSS 選擇器權(quán)重,99% 的人都理解錯(cuò)了!

開發(fā) 前端
!important?并不改變特異性,而是在特異性比較之后,作為一個(gè)額外的優(yōu)先級(jí)判斷依據(jù)。使用!important?應(yīng)該謹(jǐn)慎,因?yàn)樗鼤?huì)破壞CSS的層疊和特異性規(guī)則,使得樣式更難于維護(hù)和調(diào)試。在可能的情況下,最好通過優(yōu)化選擇器和組織樣式規(guī)則來避免使用!important。

CSS 選擇器的權(quán)重(特異性)是確定在多個(gè)選擇器應(yīng)用于同一元素時(shí),哪個(gè)選擇器的樣式會(huì)最終生效的關(guān)鍵因素。然而,關(guān)于 CSS 選擇器特異性的理解,常常存在一些常見的誤解。本文將探討這些誤解,并幫助大家理解 CSS 選擇器的權(quán)重。

誤解一:權(quán)重是一個(gè)數(shù)字

CSS 選擇器的權(quán)重并不是一些數(shù)字。所以,計(jì)算元素的權(quán)重時(shí),并不是簡(jiǎn)單的將權(quán)重?cái)?shù)值相加就可以了。

CSS 選擇器的權(quán)重由三個(gè)部分組成,表示為 (a, b, c),其中 a、b、c 分別代表了不同選擇器類型的權(quán)重。具體規(guī)則如下:

  • ID選擇器:權(quán)重值為(1, 0, 0),通過元素的ID選擇器來匹配的樣式。
  • 類選擇器、屬性選擇器和偽類選擇器:權(quán)重值為(0, 1, 0),類選擇器(如.example)、屬性選擇器(如[type="text"])和偽類選擇器(如:hover)具有相同的權(quán)重。
  • 元素選擇器和偽元素選擇器:權(quán)重值為(0, 0, 1),元素選擇器(如p)和偽元素選擇器(如::before)具有相同的權(quán)重。

注意:通配符選擇器(如 *)、子選擇器(如 >)、相鄰兄弟選擇器(如 +)和兄弟選擇器(如 ~)對(duì)權(quán)重沒有貢獻(xiàn),即它們的權(quán)重為 (0,0,0)。

權(quán)重計(jì)算規(guī)則:

  1. 從左到右進(jìn)行比較:首先比較最高位(內(nèi)聯(lián)樣式),如果相同,則比較下一位,依此類推。例如(1, 0, 0)的優(yōu)先級(jí)高于(0, 1, 0),而(0, 1, 0)的優(yōu)先級(jí)高于(0, 0, 1)。
  2. 權(quán)重相加:每個(gè)組成部分的權(quán)重是獨(dú)立計(jì)算的,并且不會(huì)累加。比如,一個(gè)選擇器中有兩個(gè)類選擇器(.class1.class2)并不會(huì)使其權(quán)重變?yōu)椋?,2,0),而是仍然保持為(0,1,0)。同樣,一個(gè)選擇器中有一個(gè)ID選擇器和一個(gè)類選擇器(#id.class)的權(quán)重是(1,1,0),而不是(2,0,0)。
  3. !important 規(guī)則:如果在聲明中使用了 !important,它會(huì)覆蓋其他所有的特異性。但需要注意的是,!important 只在同一來源的樣式中有效。如果來自用戶代理樣式表(瀏覽器默認(rèn)樣式)或用戶樣式表的 !important 規(guī)則與來自作者樣式表的普通規(guī)則沖突,那么用戶代理樣式表或用戶樣式表的 !important 規(guī)則會(huì)生效。
  4. 來源順序:如果兩個(gè)規(guī)則的特異性相同,并且都沒有使用 !important,那么后出現(xiàn)的規(guī)則會(huì)覆蓋先出現(xiàn)的規(guī)則(即“后來者居上”的原則)。

例如:

/* 權(quán)重為 (0,0,1) */  
div { color: red; }  

/* 權(quán)重為 (0,1,0) */  
.class1 { color: green; }  

/* 權(quán)重為(1,0,0) */  
#id1 { color: blue; }  

/* 權(quán)重為(1,1,0)(因?yàn)?ID 選擇器的權(quán)重高于類選擇器)*/  
#id1.class1 { color: purple; }  

/* 權(quán)重為(0,1,0),因?yàn)橹挥幸粋€(gè)類選擇器 */  
.class1 { color: red; }  
  
/* 權(quán)重為(0,1,0),即使有兩個(gè)類選擇器,但它們的權(quán)重不會(huì)相加 */  
.class1.class2 { color: blue; }  
  
/* 權(quán)重為(1,1,0),因?yàn)橐粋€(gè)ID選擇器和一個(gè)類選擇器的組合 */  
#id1.class1 { color: green; }  
  
/* 權(quán)重為(0,1,0),因?yàn)橛腥齻€(gè)類選擇器,但每個(gè)類選擇器的權(quán)重仍然是(0,1,0) */  
.class1.class2.class3 { color: purple; }

在上面的例子中,即使選擇器中包含多個(gè)相同的組成部分(如類選擇器),每個(gè)組成部分的權(quán)重仍然是獨(dú)立的,并且不會(huì)累加。因此,在選擇器沖突時(shí),特異性更高的選擇器將覆蓋特異性較低的選擇器。如果特異性相同,則后出現(xiàn)的規(guī)則會(huì)覆蓋先出現(xiàn)的規(guī)則(即“后來者居上”的原則)。

詳細(xì)來看看最后一個(gè)例子:

對(duì)于選擇器 .class1.class2.class3,其特異性(權(quán)重)的計(jì)算方式如下:

  • 該選擇器包含三個(gè)類選擇器(.class1、.class2 和 .class3)。
  • 在CSS特異性計(jì)算中,每個(gè)類選擇器都貢獻(xiàn)(0,1,0)的特異性值。
  • 由于特異性值不會(huì)跨類型累加,我們只需關(guān)注類選擇器這一位(即第三位)上的數(shù)量。
  • 在這個(gè)例子中,有三個(gè)類選擇器,但每個(gè)類選擇器在類選擇器這一位上的值仍然是 1。

但是,這并不意味著三個(gè)類選擇器加起來就是 3。實(shí)際上,在選擇器的特異性計(jì)算中,我們不會(huì)將類選擇器這一位上的值相加。我們只需記錄存在多少個(gè)類選擇器(在這個(gè)例子中是三個(gè))。然而,在描述特異性時(shí),我們通常(0,3,0)不直接寫出這樣的表示法,因?yàn)榘凑諛?biāo)準(zhǔn)的特異性表示法,我們只需指出在類選擇器這一位上有三個(gè)單位(即 0,1,0 出現(xiàn)了三次)。

但是,為了明確和避免混淆,當(dāng)我們談?wù)撨@種由多個(gè)同類選擇器組成的選擇器的特異性時(shí),我們可能會(huì)說它在類選擇器這一位上的特異性“權(quán)重”相當(dāng)于(0,3,0)(盡管這不是標(biāo)準(zhǔn)的表示法)。不過,在比較選擇器的特異性時(shí),我們只需記住它在類選擇器這一位上有三個(gè)單位。

因此,.class1.class2.class3 的特異性(權(quán)重)按照標(biāo)準(zhǔn)的表示法是 (0,1,0)(但因?yàn)橛腥齻€(gè)類選擇器,所以在類選擇器這一位上的“等效權(quán)重”可以理解為三個(gè)單位)。


誤解二:使用style屬性會(huì)增加權(quán)重

很多人認(rèn)為,在 HTML 元素上直接使用style屬性來定義 CSS 樣式會(huì)增加樣式權(quán)重。

在 HTML 元素上直接使用style屬性并不會(huì)增加元素的特異性。實(shí)際上,style 屬性定義的樣式具有最高的優(yōu)先級(jí),這通常被稱為“內(nèi)聯(lián)樣式”或“行內(nèi)樣式”。但這種高優(yōu)先級(jí)并非來源于特異性的計(jì)算,而是源于CSS層疊和沖突解決機(jī)制中的一個(gè)特殊規(guī)則。

CSS層疊的優(yōu)先級(jí)規(guī)則中,style屬性(內(nèi)聯(lián)樣式)的優(yōu)先級(jí)高于其他任何在樣式表中定義的樣式規(guī)則,無論這些樣式規(guī)則使用了何種選擇器(ID、類、元素等)。但請(qǐng)注意,這種優(yōu)先級(jí)與特異性是兩個(gè)不同的概念。

  • 特異性:用來確定哪些樣式規(guī)則會(huì)應(yīng)用到元素上的機(jī)制。特異性是一個(gè)由三個(gè)部分組成的權(quán)重值當(dāng)兩個(gè)或更多的樣式規(guī)則都適用于同一個(gè)元素時(shí),瀏覽器會(huì)根據(jù)這些規(guī)則的特異性來決定哪個(gè)規(guī)則會(huì)最終應(yīng)用到該元素上。
  • 優(yōu)先級(jí):在特異性相同的情況下,用來確定哪個(gè)樣式規(guī)則會(huì)生效的機(jī)制。這時(shí),會(huì)按照以下順序來確定優(yōu)先級(jí),在優(yōu)先級(jí)上,用戶樣式會(huì)覆蓋用戶代理樣式,而作者樣式會(huì)覆蓋用戶樣式(除非用戶樣式使用了!important):

內(nèi)聯(lián)樣式

作者的樣式表

重要的作者樣式

普通的作者樣式

用戶代理樣式(User Agent Stylesheet):瀏覽器的默認(rèn)樣式,如默認(rèn)字體大小、顏色等。

用戶樣式(User Styles):通過瀏覽器設(shè)置或擴(kuò)展自定義的樣式。

作者樣式(Author Styles):在樣式表中定義的樣式。

在作者定義的樣式中,內(nèi)聯(lián)樣式具有最高的優(yōu)先級(jí),即使其他樣式規(guī)則具有更高的特異性。但請(qǐng)注意,這并不意味著內(nèi)聯(lián)樣式具有更高的特異性;它只是在優(yōu)先級(jí)上高于其他樣式。因此,style屬性并不會(huì)增加元素的權(quán)重。

誤解三:使用!important會(huì)增加權(quán)重

我們知道,在 CSS 中使用 !important 會(huì)使得樣式的優(yōu)先級(jí)最高。不過,在 CSS 聲明中使用 !important 并不會(huì)增加其特異性。

特異性(權(quán)重)是一個(gè)由選擇器類型決定的權(quán)重系統(tǒng),用于確定在多個(gè)樣式規(guī)則應(yīng)用于同一元素時(shí),哪個(gè)規(guī)則會(huì)被優(yōu)先應(yīng)用。而!important則是一個(gè)覆蓋機(jī)制,用于改變聲明的優(yōu)先級(jí),使其在CSS的層疊順序中具有更高的權(quán)重。

當(dāng)瀏覽器需要確定一個(gè)元素的最終樣式時(shí),它會(huì)按照以下步驟進(jìn)行:

  1. 計(jì)算特異性:首先,瀏覽器會(huì)計(jì)算每個(gè)應(yīng)用于該元素的 CSS 規(guī)則的特異性。特異性越高的規(guī)則,其優(yōu)先級(jí)越高。
  2. 比較來源:如果兩個(gè)或多個(gè)規(guī)則具有相同的特異性,瀏覽器會(huì)進(jìn)一步比較這些規(guī)則的來源。通常,用戶定義的樣式(如瀏覽器擴(kuò)展或用戶樣式表)會(huì)覆蓋作者定義的樣式(即網(wǎng)頁開發(fā)者的樣式表),而作者定義的樣式會(huì)覆蓋用戶代理樣式(即瀏覽器的默認(rèn)樣式)。
  3. 考慮!important:如果兩個(gè)或多個(gè)規(guī)則具有相同的特異性和來源,并且其中至少有一個(gè)使用了!important,則使用了!important的規(guī)則會(huì)覆蓋沒有使用!important的規(guī)則。
  4. 比較順序:如果兩個(gè)或多個(gè)規(guī)則具有相同的特異性、來源,并且都沒有使用!important,或者都使用了!important,則最后定義的規(guī)則會(huì)覆蓋先前定義的規(guī)則。

因此,!important并不改變特異性,而是在特異性比較之后,作為一個(gè)額外的優(yōu)先級(jí)判斷依據(jù)。使用!important應(yīng)該謹(jǐn)慎,因?yàn)樗鼤?huì)破壞CSS的層疊和特異性規(guī)則,使得樣式更難于維護(hù)和調(diào)試。在可能的情況下,最好通過優(yōu)化選擇器和組織樣式規(guī)則來避免使用!important。

責(zé)任編輯:武曉燕 來源: 前端充電寶
相關(guān)推薦

2019-05-15 16:15:08

HTTPGETPOST

2016-09-23 15:10:10

HTTPGETPOST

2024-12-26 08:42:37

2025-08-08 08:11:57

localhost網(wǎng)絡(luò)開發(fā)

2013-03-11 10:30:56

CSSWeb

2010-09-07 11:14:32

CSS屬性選擇器CSS

2023-03-16 10:20:55

CSS選擇器

2022-02-10 16:25:11

css面試題選擇器權(quán)重

2025-04-30 07:15:11

2025-07-02 09:56:06

2010-09-03 09:30:29

CSS選擇器

2010-08-26 12:47:15

CSSclass

2010-09-06 08:52:00

CSS選擇器

2023-01-30 08:42:33

CSS選擇器性能

2014-04-30 12:18:07

軟件設(shè)計(jì)

2020-10-25 08:57:56

CSS前端瀏覽器

2011-10-24 10:30:20

CSS

2024-08-06 09:26:15

Zustand選擇器Action

2025-12-10 01:44:00

大模型AIKarpathy

2021-03-15 08:02:43

線性結(jié)構(gòu)PriorityQue
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩亚洲精品电影| 国产精品99久久久久久有的能看| 欧美在线观看视频一区二区| 中文字幕人妻熟女人妻洋洋| 欧美精品国产| 欧美黑人国产人伦爽爽爽| 国产乱色在线观看| 国产日产欧美一区二区三区| 欧美中文娱乐网| 精品欧美久久| 久久高清视频免费| а√天堂中文在线资源8| 懂色av中文一区二区三区天美| 国产99久久九九精品无码| 日韩中文字幕亚洲一区二区va在线| 国产精品久久久久久久久久久新郎 | 精品福利一区二区| 尤物av无码色av无码| 国产一区二区精品| 国产美女久久精品| 国产精品乱战久久久| 亚洲天堂av电影| 永久免费网站在线| 色系网站成人免费| 国产成人精品免费视| 欧美久久久久久蜜桃| 无码 制服 丝袜 国产 另类| 高跟丝袜欧美一区| 国自产拍偷拍精品啪啪一区二区| 日韩av电影免费在线观看| 久久久久久9| 欧美专区第一页| 制服视频三区第一页精品| av黄色免费| 久久网站热最新地址| 国产成人永久免费视频| 毛片不卡一区二区| 亚洲黄色成人久久久| 日日夜夜精品免费视频| 无码免费一区二区三区免费播放| 日韩视频二区| 日韩电影免费观看高清完整| 亚洲精品社区| 日本不卡二区高清三区| 美女任你摸久久| 日本不卡一区二区三区四区| 国产成人午夜片在线观看高清观看| 青青草影院在线观看| 国产美女精品一区二区三区| 免费一级特黄毛片| 国产婷婷色一区二区三区在线| 欧美性猛交久久久乱大交小说| 国产精品美女久久久久久| 国产对白国语对白| 亚洲国产精品麻豆| 高清性色生活片在线观看| 欧美一区二区三区不卡| 偷拍自拍在线看| 欧美精品手机在线| 国产伦精品一区二区三区视频| 国产主播欧美精品| 精品不卡视频| 伊人久久99| 91色综合久久久久婷婷| 无码少妇一区二区三区芒果| 一区二区三区在线播放| 成人精品一区| 国产视频亚洲精品| 国产精东传媒成人av电影| 成人国产精品日本在线| 亚洲一区二区伦理| 欧美精品久久久久久久久久久| 国产精品国产三级国产普通话蜜臀 | 91sa在线看| 婷婷色综合网| 久久久www免费人成黑人精品| 青青草伊人久久| 激情小视频网站| 亚洲色欲色欲www| 免费黄色网页在线观看| 亚洲欧美三级伦理| 欧美一区自拍| 久久精品中文字幕一区二区三区| 成人国产精品免费观看视频| 最新中文在线视频| 国产偷亚洲偷欧美偷精品| 色婷婷久久久| 亚洲成人蜜桃| 亚洲欧美一区二区三区久本道91 | 国产xxxx振车| 亚洲精品少妇30p| 免费黄色在线| 欧美成人全部免费| 亚洲高清久久| 成人在线观看a| 欧美精品久久99| 精品一区二区三区免费看| 高清一区二区三区视频| 91免费精品国自产拍在线不卡| 理论在线观看| 久久精品国产欧美亚洲人人爽| 欧美男同视频网| japanese在线视频| 五月天激情小说综合| 国产精品久久久久久久久免费高清 | 成人在线超碰| 性欧美.com| 一区二区三区精品在线观看| 91超碰在线| 国产剧情久久久久久| 成人性生交大片免费| 三区四区在线视频| 4k岛国日韩精品**专区| 国内久久婷婷综合| 欧美一区二区视频| 久久欧美在线电影| 麻豆精品在线看| 日本大片在线观看| 国内精品小视频在线观看| 韩国三级中文字幕hd久久精品| 中文字幕在线播放第一页| 久久九九精品99国产精品| 青青国产91久久久久久| 国产精品99999| 国产不卡av在线| 久久影院视频免费| 欧美伦理91| 精品亚洲欧美日韩| 精品高清一区二区三区| 国产精品久久久久久久久久白浆| 人人妻人人澡人人爽欧美一区 | youjizzxxxx18| 日韩精品999| 野花国产精品入口| 色在线免费视频| 国产精品69久久| 国产精品色噜噜| 视频精品二区| 黄色一级在线视频| 亚洲视频777| 国产综合久久久久久久久久久久| 久久五月精品| 国产精品久久久久久久久久久久午夜片| 亚洲精品伦理在线| 国产精品欧美大片| 狠狠躁狠狠躁视频专区| 久久精品国产一区二区电影| 国产成人精品免费看| 涩涩网在线视频| 中文字幕一区综合| 亚洲黄色片网站| 国产综合色产在线精品| 午夜裸体女人视频网站在线观看| 日本一区二区三区免费观看| 欧美日韩高清一区二区不卡| 欧美激情亚洲| 成人av电影观看| 久久精品日产第一区二区三区| 欧美日韩免费一区二区三区| 国产一区91| 国产传媒av在线| 欧美狂野激情性xxxx在线观| 日韩在线免费av| 亚洲国产精品精华液2区45| 视频在线亚洲| 成年网站免费| 成人福利视频在线观看| 欧美影院午夜播放| 美女尤物久久精品| 蜜桃视频动漫在线播放| 免费毛片网站在线观看| 欧美韩国理论所午夜片917电影| 国产精品网曝门| 青青草国产成人a∨下载安卓| 免费在线毛片| 日韩精品资源| 亚洲天堂网站在线观看视频| 久久久99免费| 超碰成人久久| 天堂地址在线www| av动漫免费观看| 欧美成人激情在线| 亚洲风情在线资源站| 一本久道久久久| 日本免费久久| 在线观看国产一级片| 成人在线视频网| 精品少妇一区二区三区在线播放| 国产成人免费视频一区| 免费在线成人激情电影| 99精品免费| 国产欧美一区二区精品忘忧草| 中文字幕巨乱亚洲| 亚洲欧美日韩在线| 国产最新在线| 黄色免费高清视频| 欧美激情亚洲精品| 一本大道久久精品懂色aⅴ| 日日嗨av一区二区三区四区| 国产精品天堂蜜av在线播放|