什么是鏈接偽類

CSS2.1定義了兩個(gè)只應(yīng)用于超鏈接的偽類。在網(wǎng)頁HTML和網(wǎng)頁XHTML 1.0及1.1中,超鏈接是有href屬性的所有a元素,在XML語言中,超鏈接則可以是任何元素,只要它作為另一個(gè)資源的鏈接。

:link

指示作為超鏈接(即有一個(gè)href屬性)并指向一個(gè)未訪問地址的所有錨。注意,有些網(wǎng)頁瀏覽器可能會不正確地將:link解釋為指向任何超鏈接,包括已訪問和未訪問的超鏈接

:visited

指示作為已訪問地址超鏈接的所有錨

第一個(gè)偽類看上去有些多余。畢竟,如果一個(gè)錨尚未訪問過,那它肯定是未訪問的鏈接,不是嗎?

如果是這樣,我們所需要的應(yīng)該只是:

a {color:blue;}

a:visited {color:red;}

盡管這種格式看上去是合理的,但這確實(shí)還不夠。以上規(guī)則中,第一個(gè)規(guī)則不僅應(yīng)用于未訪問的鏈接,還會應(yīng)用到以下錨:

<a name=" sect ion4 ">4. The Lives o£ Meerkats</a>

相應(yīng)的文本就會變成藍(lán)色,因?yàn)槿缟纤?,a元素與規(guī)則a{color:blue;}匹配。因此,為了避免將鏈接樣式應(yīng)用到目標(biāo)錨,要使用:link偽類:

a:link {color: blue;}/* unvisited links are blue */

a:visited {color: red;}/* visited links are red */

你可能已經(jīng)意識到了,:link和:visited偽類選擇器在功能上與body屬性link和 vlink是等價(jià)的。假設(shè)一個(gè)網(wǎng)頁設(shè)計(jì)師希望所有未訪問頁面的錨都是紫色,而所有已訪問頁面的錨是銀色。在HTML 3.2中,這要如下指定:

<body link="purple" vlink="silver">

在CSS中,利用以下規(guī)則可以達(dá)到同樣的效果:

a:link {color:purple;} 

a:visited {color: silver;}

當(dāng)然,對于CSS偽類,不僅可以應(yīng)用顏色,還可以應(yīng)用更多樣式。假設(shè)你希望已訪問鏈接為斜體,而且除了銀色外還有一條貫穿線

只需以下樣式就可以達(dá)到目的:

a:visited {color: silver; text-decoration: line-through; font-style: italic;}

現(xiàn)在有必要再來回顧類選擇器,并說明類選擇器如何與偽類結(jié)合。例如,假設(shè)你希望指向除了自己建設(shè)網(wǎng)站以外的外部網(wǎng)站資源的鏈接改變顏色。如果為每一個(gè)這樣的錨指定一個(gè)類,就很容易做到:

<a href="http://www.mysite.net/">My home page</a>

<a href="http://www.site.net/" class="external">Another home page</a>

要為外部鏈接應(yīng)用不同的樣式,只需如下的一條規(guī)則:

a.external:link, a.external:visited {color: maroon;}

這個(gè)規(guī)則會使以上標(biāo)記中的第二個(gè)錨變成紫紅色,而第一個(gè)錨仍保持為超鏈接的默認(rèn)顏色(通常是藍(lán)色)。

這個(gè)一般語法也適用于ID選擇器:

a#£ooter-copyright:link{font-weight: bold;}

a#footer-copyright:visited {font-weight: normal;}

盡管:link和:visited非常有用,但它們是靜態(tài)的——第一次顯示之后,它們一般不會再改變文檔的樣式。CSS2.1中還有一些沒有這種靜態(tài)性的偽類,接下來將詳細(xì)說明。