瀏覽器如何判斷css優(yōu)先級(jí)
來源:易賢網(wǎng) 閱讀:1121 次 日期:2015-03-02 11:12:44
溫馨提示:易賢網(wǎng)小編為您整理了“瀏覽器如何判斷css優(yōu)先級(jí)”,方便廣大網(wǎng)友查閱!

概念

瀏覽器是通過判斷優(yōu)先級(jí),來決定到底哪些屬性值是與元素最相關(guān)的,從而應(yīng)用到該元素上。優(yōu)先級(jí)是由選擇器組成的匹配規(guī)則決定的。

如何計(jì)算?

優(yōu)先級(jí)是根據(jù)由每種選擇器類型構(gòu)成的級(jí)聯(lián)字串計(jì)算而成的. 它不是一個(gè)對(duì)應(yīng)相應(yīng)匹配表達(dá)式的權(quán)重值.

如果優(yōu)先級(jí)相同,元素最終會(huì)應(yīng)用 CSS 中靠后的聲明.

注意: 在文檔樹中的距離是不會(huì)對(duì)元素優(yōu)先級(jí)計(jì)算產(chǎn)生影響的.(可以看文檔中無視DOM樹中的距離的例子)

優(yōu)先級(jí)順序

下列是一份優(yōu)先級(jí)逐級(jí)增加的選擇器列表:

通用選擇器*

元素(類型)選擇器

類選擇器

屬性選擇器

偽類

ID 選擇器

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

事實(shí)上,元素還可以從父元素上繼承一些樣式,如color等屬性。這些繼承的樣式的優(yōu)先級(jí)永遠(yuǎn)低于元素本身的樣式,包括通用選擇器:

代碼如下:

<div id='test'>

<a href="#">text</a>

</div></p> <p> * {

color:red;

}

#test{

color:blue;

}

最終text的顏色是紅色的。

!important 規(guī)則是例外

當(dāng)!important 規(guī)則被應(yīng)用在一個(gè)樣式聲明中時(shí),該樣式聲明會(huì)覆蓋CSS中任何其他的聲明, 無論它處在聲明列表中的哪個(gè)位置. 盡管如此, !important規(guī)則還是與優(yōu)先級(jí)毫無關(guān)系使用!important不是一個(gè)好習(xí)慣,因?yàn)樗淖兞四銟邮奖肀緛淼募?jí)聯(lián)規(guī)則,從而難以調(diào)試。

一些不成文規(guī)則

不要在全站范圍的css中使用!important.

只在需要覆蓋全站范圍的css或是外部css(例如引用的ExtJs或是YUI)的時(shí)候才在指定的頁面上使用 !important。

不要在你的插件中使用!important。

永遠(yuǎn)都要優(yōu)先考慮使用樣式規(guī)則的優(yōu)先級(jí)來解決問題而不是 !important。

取而代之,你可以:

更好的利用CSS的級(jí)聯(lián)屬性

更多的使用適合的選擇器。比如在你需要選定的對(duì)象元素前加上更多的元素,使選擇的范圍縮小,你的選擇器就變得更有針對(duì)性,從而提高優(yōu)先級(jí):

代碼如下:

<div id="test">

<span>Text</span>

</div>

div#test span { color: green }

span { color: red }

div span { color: blue }

無論你c​ss語句的順序是什么樣的,文本都會(huì)是綠色的(green)因?yàn)檫@一條規(guī)則是最有特殊性、優(yōu)先級(jí)最高的。(同理,無論語句順序怎樣,藍(lán)色(blue)的規(guī)則都會(huì)覆蓋紅色(red)的規(guī)則)

什么時(shí)候應(yīng)該使用:

A) 一種情況

你的網(wǎng)站上有一個(gè)設(shè)定了全站樣式的CSS文件,同時(shí)你(或是你同事)寫了一些效果通常都是很差的行內(nèi)樣式(行內(nèi)樣式的優(yōu)先級(jí)是最高的)。

在這種情況下,你就可以在你全局的CSS文件中寫一些!important的樣式來覆蓋掉那些直接寫在元素上的行內(nèi)樣式。

活生生的例子比如:有人在jQuery插件里寫了糟糕的行內(nèi)樣式。

B) 另一種情況

代碼如下:

#someElement p {

color: blue;

}

p.awesome {

color: red;

}

在外層有 #someElement 的情況下,你怎樣能使 awesome 的段落變成紅色呢?這種情況下,如果不使用!important,第一條規(guī)則永遠(yuǎn)比第二條的優(yōu)先級(jí)更高。

怎樣覆蓋掉 !important

很簡(jiǎn)單,你只需要再加一條 !important 的CSS語句,將其應(yīng)用到更高優(yōu)先級(jí)的選擇器(在原有基礎(chǔ)上添加額外的標(biāo)簽、class或id選擇器)上;或是保持選擇器一樣,但添加的位置需要在原有聲明的后面(優(yōu)先級(jí)相同的情況下,后邊定義的會(huì)覆蓋前邊定義的)。

代碼如下:

<div>

<a href="#" id="test">text</a>

</div>

想要把原有的綠色文本變成紅色,提升優(yōu)先級(jí)的方式:

代碼如下:

#test.a{

color: red !important;<!--盡管這條聲明在前,但是仍會(huì)覆蓋下邊的樣式-->

}

a{

color: green !important;

}

不過

代碼如下:

a{

color: green !important;

}

a{

color: red !important;<!--同樣的選擇器,后邊的聲明會(huì)覆蓋前邊的-->

}

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:瀏覽器如何判斷css優(yōu)先級(jí)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)