CSS 優(yōu)先級(jí)

概念

瀏覽器通過(guò)優(yōu)先級(jí)來(lái)判斷哪一些屬性值與一個(gè)元素最為相關(guān),從而在該元素上應(yīng)用這些屬性值。優(yōu)先級(jí)基于由各種選擇器組成的匹配規(guī)則。

樣式的優(yōu)先級(jí)

多重樣式(Multiple Styles):如果外部樣式、內(nèi)部樣式和內(nèi)聯(lián)樣式同時(shí)應(yīng)用于同一個(gè)元素,就是使多重樣式的情況。

一般情況下,優(yōu)先級(jí)如下:
(外部樣式) <(內(nèi)部樣式) <(內(nèi)聯(lián)樣式)

有個(gè)例外的情況,就是如果外部樣式放在內(nèi)部樣式后面,則外部樣式將覆蓋內(nèi)部樣式。

選擇器的優(yōu)先權(quán)

Paste_Image.png

解釋:

  1. 內(nèi)聯(lián)樣式表的權(quán)值最高 1000;
  2. ID 選擇器的權(quán)值為 100
  3. Class 類選擇器的權(quán)值為 10
  4. HTML 標(biāo)簽選擇器的權(quán)值為 1
    <html>
    <head>
    <style type="text/css">
    #redP p {
    /* 權(quán)值 = 100+1=101 /
    color:#F00; /
    紅色 /
    }
    #redP .red em {
    /
    權(quán)值 = 100+10+1=111 /
    color:#00F; /
    藍(lán)色 /
    }
    #redP p span em {
    /
    權(quán)值 = 100+1+1+1=103 /
    color:#FF0;/
    黃色*/
    }
    </style>
    </head>
    <body>
    <div id="redP">
    <p class="red">red

    <span><em>em red</em></span>
    </p>
    <p>red</p>
    </div>
    </body>
    </html>
    最后結(jié)果為:
    Paste_Image.png

優(yōu)先級(jí)法則

  • 選擇器都有一個(gè)權(quán)值,權(quán)值越大越優(yōu)先;
  • 當(dāng)權(quán)值相等時(shí),后出現(xiàn)的樣式表設(shè)置要優(yōu)于先出現(xiàn)的樣式表設(shè)置;
  • 創(chuàng)作者的規(guī)則高于瀏覽者:即網(wǎng)頁(yè)編寫者設(shè)置的CSS 樣式的優(yōu)先權(quán)高于瀏覽器所設(shè)置的樣式;
  • 繼承的CSS 樣式不如后來(lái)指定的CSS 樣式;
  • 在同一組屬性設(shè)置中標(biāo)有!important規(guī)則的優(yōu)先級(jí)最大

修改樣式

<style type="text/css">
        #redP p {
            /* 權(quán)值 = 100+1=101 */
            color:#F00;  
        }
        #redP .red em {
            /* 權(quán)值 = 100+10+1=111 */
            color:#00F; 
        }
        #redP p span em {
            /* 權(quán)值 = 100+1+1+1=103 */
            color:#FF0 !important;
        }
</style>

則結(jié)果為:

Paste_Image.png

!important

當(dāng)在一個(gè)樣式聲明上使用 !important 規(guī)則時(shí),該樣式聲明會(huì)覆蓋CSS中任何其他的聲明。使用 !important 是一個(gè)壞習(xí)慣,應(yīng)該盡量避免,因?yàn)檫@打斷了樣式表中的固有的級(jí)聯(lián)規(guī)則。當(dāng)兩條相互沖突的帶有!important 規(guī)則的聲明被應(yīng)用到相同的元素上時(shí),擁有更大優(yōu)先級(jí)的聲明將會(huì)被采用。

一些經(jīng)驗(yàn)法則:

  • Never 永遠(yuǎn)不要在全站范圍的 css 上使用 !important
  • Only 只在需要覆蓋全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定頁(yè)面中使用 !important
  • Never 永遠(yuǎn)不要在你的插件中使用 !important
  • Always 要優(yōu)化考慮使用樣式規(guī)則的優(yōu)先級(jí)來(lái)解決問(wèn)題而不是 !important

取而代之,你可以:

  • 善用 CSS 的級(jí)聯(lián)屬性
    使用更多具體的規(guī)則。比如在你需要選定的對(duì)象元素前加上更多的元素,使選擇的范圍縮小,你的選擇器就變得更有針對(duì)性,從而提高優(yōu)先級(jí):
    <div id="test"> <span>Text</span></div>
    #test span { color: green }span { color: red }div span { color: blue }
    無(wú)論你c?ss語(yǔ)句的順序是什么樣的,文本都會(huì)是綠色的(green),因?yàn)檫@一條規(guī)則是最有針對(duì)性、優(yōu)先級(jí)最高的。(同理,無(wú)論語(yǔ)句順序怎樣,藍(lán)色(blue)的規(guī)則都會(huì)覆蓋紅色(red)的規(guī)則)

怎樣覆蓋掉 !important

  • 再加一條 !important的CSS語(yǔ)句,將其應(yīng)用到更高優(yōu)先級(jí)的選擇器(在原有基礎(chǔ)上添加額外的標(biāo)簽、類或 ID 選擇器)上
  • 保持選擇器一樣,但添加的位置需要在原有聲明的后面(優(yōu)先級(jí)相同的情況下,后邊定義的會(huì)覆蓋前邊定義的)。
  • 使用相同的選擇器,但是置于已有的樣式之后
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評(píng)論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,860評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評(píng)論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評(píng)論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,025評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,421評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,642評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,177評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,970評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,157評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,410評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評(píng)論 1 289
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,896評(píng)論 3 395
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,157評(píng)論 2 375

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