什么是鏈接偽類

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

:link

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

:visited

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

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

如果是這樣,我們所需要的應該只是:

a {color:blue;}

a:visited {color:red;}

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

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

相應的文本就會變成藍色,因為如上所示,a元素與規(guī)則a{color:blue;}匹配。因此,為了避免將鏈接樣式應用到目標錨,要使用:link偽類:

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

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

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

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

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

a:link {color:purple;} 

a:visited {color: silver;}

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

只需以下樣式就可以達到目的:

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

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

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

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

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

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

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

這個一般語法也適用于ID選擇器:

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

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

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