技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類(lèi)目錄

贊助商

最新文章

搜索

CSS類(lèi)不起作用?id、類(lèi)名、標(biāo)簽選擇器的優(yōu)先分析

作者:admin    時(shí)間:2022-5-6 8:45:48    瀏覽:

定義了某個(gè)標(biāo)簽用的CSS類(lèi),結(jié)果發(fā)現(xiàn)不起作用,原因其實(shí)很明顯,就是另外還有與之相關(guān)聯(lián)的CSS定義,如果頁(yè)面用到的CSS比較多且凌亂,那么檢查起來(lái)就比較困難。CSS類(lèi)不起作用的原因,其實(shí)就是繼承與優(yōu)先的問(wèn)題。今天我將通過(guò)幾個(gè)實(shí)例來(lái)分析這個(gè)問(wèn)題。

實(shí)例

下面是一個(gè)完整的HTML實(shí)例。

HTML結(jié)構(gòu)

<div class="wrap">
  <div class="content">
    <a href="http://www.howtostagehomes.com/">content - 卡卡網(wǎng) www.howtostagehomes.com</a>
  </div>

  <div class="footer">
    <a href="http://www.howtostagehomes.com/">footer - 卡卡網(wǎng) www.howtostagehomes.com</a>
  </div>
</div>

CSS

div.wrap a{color: blue;}
div.content a{color: red;}
.footer a{color: red;}

由于外層div的類(lèi).wrap已經(jīng)定義了鏈接的顏色為blue。而我想在內(nèi)層.footerdiv把鏈接顏色設(shè)置為red。但代碼執(zhí)行結(jié)果不在預(yù)期,顯示如下:

 

demodownload

我們看到,內(nèi)層定義的類(lèi).footer不起作用了。但同時(shí)又看到,另一個(gè)內(nèi)層.contentdiv,其CSS的定義是有效的。為什么會(huì)出現(xiàn)這個(gè)情況呢?寫(xiě)法的差異!

CSS類(lèi)不起作用的原因:繼承與優(yōu)先

實(shí)例中,.footer類(lèi)名前,沒(méi)有加上標(biāo)簽div,而.content類(lèi)名前,加上了div標(biāo)簽。就是這個(gè)原因?qū)е铝藢?shí)例中的顯示結(jié)果。

如果想.footer類(lèi)的div,按預(yù)期的想法來(lái)顯示,那么就要把類(lèi)名改一下寫(xiě)法,把.footer改為div.footer,我們看看改后的顯示結(jié)果。

 

demodownload

CSS定義優(yōu)先比較:id、標(biāo)簽與類(lèi)名

CSS定義可以用標(biāo)簽,例如p、div,span等,也可以用類(lèi)名,例如.wrap 、.content.footer等,還經(jīng)常用到id來(lái)作為選擇器,例如#header,#nav等。在實(shí)際使用中,經(jīng)常出現(xiàn)多個(gè)CSS定義重疊作用的問(wèn)題。這種情況下,瀏覽器渲染時(shí)就會(huì)按照CSS繼承與優(yōu)先的規(guī)則來(lái)執(zhí)行。

用了標(biāo)簽定義CSS,再用類(lèi)定義還有效嗎?

我們看看下面一個(gè)實(shí)例。

<style type="text/css">
div a{color: blue;}
.footer a{color: red;}
</style>

<div class="footer">
  <a href="http://www.howtostagehomes.com/">footer - 卡卡網(wǎng) www.howtostagehomes.com</a>
</div>

已經(jīng)有了div的CSS定義,在HTML里,某個(gè)div比較特殊,又自己加了個(gè)類(lèi)定義.footer。結(jié)果顯示如下:

 

demodownload

我們看到,這個(gè)類(lèi).footer的CSS定義是起作用的。

id與類(lèi)名,哪個(gè)更優(yōu)先?

我們?cè)倏纯聪旅娴膶?shí)例。

<style type="text/css">
  #wrap a{color: blue;}
  .footer a{color: red;}
</style>

<div id="wrap">
  <div class="footer">
    <a href="http://www.howtostagehomes.com/">footer - 卡卡網(wǎng) www.howtostagehomes.com</a>
  </div>
</div>

先有了#wrap的定義,再有.footer的定義。結(jié)果顯示這樣。

 

demodownload

可以看到,針對(duì)id的CSS定義#wrap,是優(yōu)先于使用類(lèi)名的CSS定義.footer的。

總結(jié)

通過(guò)本文幾個(gè)實(shí)例的分析,對(duì)CSS定義的繼承與優(yōu)先應(yīng)該有了一定的了解,就是越具體越優(yōu)先,并且遵循如下規(guī)則:id選擇器 > 類(lèi)選擇器 > 標(biāo)簽選擇器。

相關(guān)文章

x