在 CSS 樣式表中,如果多個(gè)樣式規(guī)則的樣式屬性應(yīng)用于同一個(gè) HTML 元素,那么就需要考慮這些樣式規(guī)則的優(yōu)先級(jí)問(wèn)題。
CSS 樣式規(guī)則可以分為以下四個(gè)級(jí)別:
1. 瀏覽器默認(rèn)樣式(用戶代理樣式) 2. 標(biāo)簽(元素)級(jí)樣式 3. 類級(jí)樣式和偽類級(jí)樣式 4. ID 級(jí)樣式和行內(nèi)樣式
這四個(gè)級(jí)別中,優(yōu)先級(jí)從大到小依次遞減。
優(yōu)先級(jí)計(jì)算的規(guī)則如下:
1. 如果樣式規(guī)則中包含 !important,則直接應(yīng)用該規(guī)則,不再考慮其他的規(guī)則。 2. 根據(jù)選擇器中包含的 ID 屬性值的個(gè)數(shù)計(jì)算優(yōu)先級(jí)值,ID 屬性值出現(xiàn)的次數(shù)越多,優(yōu)先級(jí)越高。例如 #header 就比 #header a 優(yōu)先級(jí)高。 3. 對(duì)于同級(jí)別的樣式規(guī)則,根據(jù)選擇器中包含的類、偽類和元素名稱的個(gè)數(shù)計(jì)算優(yōu)先級(jí)值。類和偽類的個(gè)數(shù)越多,優(yōu)先級(jí)越高。 4. 對(duì)于同級(jí)別的樣式規(guī)則,如果選擇器中包含了相同名稱的元素,則以后面選擇器的優(yōu)先級(jí)高。 5. 如果以上所有規(guī)則都不足以區(qū)分優(yōu)先級(jí),則以最后指定的樣式規(guī)則為準(zhǔn)。即如果同一個(gè)元素應(yīng)用了多個(gè)樣式規(guī)則,那么最后一個(gè)樣式規(guī)則的屬性值將被應(yīng)用。
以下是一個(gè)示例,包含不同優(yōu)先級(jí)的樣式規(guī)則:
/* 瀏覽器默認(rèn)樣式 */ p { color: black; } /* 標(biāo)簽級(jí)樣式 */ div p { color: red; } /* 類級(jí)樣式 */ .big-text { font-size: 24px; } /* 偽類級(jí)樣式 */ a:hover { color: blue; } /* ID 級(jí)樣式 */ #header { background-color: gray; } /* 行內(nèi)樣式 */Hello World!
這里的樣式規(guī)則中包含了瀏覽器默認(rèn)樣式、標(biāo)簽級(jí)樣式、類級(jí)樣式、偽類級(jí)樣式、ID 級(jí)樣式和行內(nèi)樣式。假設(shè)我們有一段 HTML 代碼如下:
<div id="header"> <p class="big-text"><a href="#">Hello World!</a></p> </div>
那么根據(jù)上述優(yōu)先級(jí)計(jì)算的規(guī)則,這段 HTML 內(nèi)容的樣式如下:
/* ID 級(jí)樣式最高,所以 “background-color: gray;” 被應(yīng)用 */ #header { background-color: gray; } /* 類級(jí)樣式的優(yōu)先級(jí)高于標(biāo)簽級(jí)樣式,所以 “font-size: 24px;” 被應(yīng)用 */ .big-text { font-size: 24px; } /* 標(biāo)簽級(jí)樣式的優(yōu)先級(jí)低于類級(jí)樣式,所以 “color: red;” 被應(yīng)用 */ div p { color: red; } /* 偽類級(jí)樣式的優(yōu)先級(jí)低于類級(jí)樣式,所以 “color: blue;” 被應(yīng)用 */ a:hover { color: blue; } /* 行內(nèi)樣式的優(yōu)先級(jí)僅次于 !important,所以 “color: green;” 被應(yīng)用 */Hello World!
/* 瀏覽器默認(rèn)樣式的優(yōu)先級(jí)最低,所以它不會(huì)被應(yīng)用 */ p { color: black; }
知道了 CSS 樣式規(guī)則優(yōu)先級(jí)的計(jì)算方法,可以更好地為 HTML 元素應(yīng)用樣式,確保樣式規(guī)則被正確地應(yīng)用。如果需要更改一個(gè)元素的樣式,那么修改樣式規(guī)則的優(yōu)先級(jí)就是一個(gè)有效的方法。
下一篇css中橢圓