CSS中a標(biāo)簽樣式的“愛恨”原則:定義鏈接樣式的四個偽類
發(fā)布時間:2012-12-10 12:06:59 作者:佚名
我要評論

CSS為一些特殊效果準(zhǔn)備了特定的工具,我們稱之為“偽類”。本文將詳細(xì)介紹經(jīng)常用于定義鏈接樣式的四個偽類,需要的朋友可以參考下
CSS為一些特殊效果準(zhǔn)備了特定的工具,我們稱之為“偽類”。其中有幾項是我們經(jīng)常用到的,下面我們就詳細(xì)介紹一下經(jīng)常用于定義鏈接樣式的四個偽類,它們分別是:
:link
:visited
:hover
:active
因為我們要定義鏈接樣式,所以其中必不可少的就是超級鏈接中的錨標(biāo)簽--a,錨標(biāo)簽和偽類鏈接起來書寫的方法就是定義鏈接樣式的基礎(chǔ)方法,它們的寫法如下:
a:link,定義正常鏈接的樣式;
a:visited,定義已訪問過鏈接的樣式;
a:hover,定義鼠標(biāo)懸浮在鏈接上時的樣式;
a:active,定義鼠標(biāo)點擊鏈接時的樣式。
示例:
a:link {
color:#FF0000;
text-decoration:underline;
}
a:visited {
color:#00FF00;
text-decoration:none;
}
a:hover {
color:#000000;
text-decoration:none;
}
a:active {
color:#FFFFFF;
text-decoration:none;
}
上面示例中定義的鏈接顏色是紅色,訪問過后的鏈接是綠色,鼠標(biāo)懸浮在鏈接上時是黑色,點擊時的顏色是白色。
如果正常鏈接和已訪問過的鏈接樣式相同,鼠標(biāo)懸浮和點擊時的樣式相同,也可以將它們合并起來定義:
a:link, a:visited {
color:#FF0000;
text-decoration:underline;
}
a:hover, a:active {
color:#000000;
text-decoration:none;
}
鏈接定義的順序
沒有規(guī)矩不成方圓,雖然鏈接定義寫好了,但它也是有規(guī)則的,如果這四項的書寫順序稍有差錯,鏈接的效果可能就沒有了,所以每次定義鏈接樣式時務(wù)必確認(rèn)定義的順序,link--visited--hover-active,也就是我們常說到的LoVe HAte原則(大寫字母就是它們的首字母)。
老外總結(jié)了一個便于記憶的“愛恨原則”(LoVe/HAte),即四種偽類的首字母:LVHA。定義A鏈接樣式的正確的順序:a:link、a:visited、a:hover、a:active。
為什么我們不能改變定義的順序?做下測試就可以了。
假設(shè)我們想實現(xiàn)下面的樣式:
鼠標(biāo)移入時,并沒有變黃。而是當(dāng)這個鏈接已經(jīng)被訪問過后,鼠標(biāo)移入才變黃:
a:visited{color:red;}
a:hover{ color:yellow;}
a:link{ color:blue;}
a:active{ color:green;}
這是因為,一個鼠標(biāo)經(jīng)過的未訪問的鏈接同時擁有a:link,a:hover兩種屬性,在上述的CSS樣式中,a:link離他最近,先滿足a:link,而放棄a:hover的重復(fù)定義。
而使用LVHA順序聲明后,它首先檢查a:hover的符合標(biāo)準(zhǔn),先變色。
所以說,為了符合瀏覽器解釋CSS遵循的"就近原則"。我們在定義CSS中,宜將最一般的條件放在最上面,并依次向下,最下面放最特殊的。
在W3C規(guī)范中,也規(guī)定了鏈接的聲明順序:
在 CSS 定義中,a:hover 必須被置于 a:link 和 a:visited 之后,才是有效的。
在 CSS 定義中,a:active 必須被置于 a:hover 之后,才是有效的。
定義局部鏈接樣式
在CSS中寫上a:link{}這樣的定義會使整個頁面的鏈接樣式改變,但有些局部鏈接需要特殊化,這個問題也不難解決,只要在鏈接樣式定義的前面加上指定的id或class就可以了。
#sidebar a:link, #sidebar a:visiteid {
color:#FF0000;
text-decoration:none;
}
#sidebar a:hover, #sidebar a:active {
color:#000000;
text-decoration:underline;
}
HTML調(diào)用:
<div id="sidebar"><a href="aa.aspx" target="_blank">鏈接到aa頁面<a></div>
class的定義方法和id相同,只要將#sidebar改為.sidebar就行了,還有一種方法是直接定義鏈接的樣式,那樣更直接,不過調(diào)用時比較麻煩,需要給每個特定的鏈接加上定義的代碼。
a.redlink a:link, a.redlink a:visiteid {
color:#FF0000;
text-decoration:none;
}
a.redlink a:hover, a.redlink a:active {
color:#000000;
text-decoration:underline;
background:#FFFFFF;
}
復(fù)制代碼
代碼如下::link
:visited
:hover
:active
因為我們要定義鏈接樣式,所以其中必不可少的就是超級鏈接中的錨標(biāo)簽--a,錨標(biāo)簽和偽類鏈接起來書寫的方法就是定義鏈接樣式的基礎(chǔ)方法,它們的寫法如下:
復(fù)制代碼
代碼如下:a:link,定義正常鏈接的樣式;
a:visited,定義已訪問過鏈接的樣式;
a:hover,定義鼠標(biāo)懸浮在鏈接上時的樣式;
a:active,定義鼠標(biāo)點擊鏈接時的樣式。
示例:
復(fù)制代碼
代碼如下:a:link {
color:#FF0000;
text-decoration:underline;
}
a:visited {
color:#00FF00;
text-decoration:none;
}
a:hover {
color:#000000;
text-decoration:none;
}
a:active {
color:#FFFFFF;
text-decoration:none;
}
上面示例中定義的鏈接顏色是紅色,訪問過后的鏈接是綠色,鼠標(biāo)懸浮在鏈接上時是黑色,點擊時的顏色是白色。
如果正常鏈接和已訪問過的鏈接樣式相同,鼠標(biāo)懸浮和點擊時的樣式相同,也可以將它們合并起來定義:
復(fù)制代碼
代碼如下:a:link, a:visited {
color:#FF0000;
text-decoration:underline;
}
a:hover, a:active {
color:#000000;
text-decoration:none;
}
鏈接定義的順序
沒有規(guī)矩不成方圓,雖然鏈接定義寫好了,但它也是有規(guī)則的,如果這四項的書寫順序稍有差錯,鏈接的效果可能就沒有了,所以每次定義鏈接樣式時務(wù)必確認(rèn)定義的順序,link--visited--hover-active,也就是我們常說到的LoVe HAte原則(大寫字母就是它們的首字母)。
老外總結(jié)了一個便于記憶的“愛恨原則”(LoVe/HAte),即四種偽類的首字母:LVHA。定義A鏈接樣式的正確的順序:a:link、a:visited、a:hover、a:active。
為什么我們不能改變定義的順序?做下測試就可以了。
假設(shè)我們想實現(xiàn)下面的樣式:
狀態(tài) | 樣式 | 顏色 |
已訪問 | a:visited | 紅 |
未訪問 | a:link | 藍 |
選定 | a:active | 綠 |
鼠標(biāo)移入 | a:hover | 黃 |
鼠標(biāo)移入時,并沒有變黃。而是當(dāng)這個鏈接已經(jīng)被訪問過后,鼠標(biāo)移入才變黃:
復(fù)制代碼
代碼如下:a:visited{color:red;}
a:hover{ color:yellow;}
a:link{ color:blue;}
a:active{ color:green;}
這是因為,一個鼠標(biāo)經(jīng)過的未訪問的鏈接同時擁有a:link,a:hover兩種屬性,在上述的CSS樣式中,a:link離他最近,先滿足a:link,而放棄a:hover的重復(fù)定義。
而使用LVHA順序聲明后,它首先檢查a:hover的符合標(biāo)準(zhǔn),先變色。
所以說,為了符合瀏覽器解釋CSS遵循的"就近原則"。我們在定義CSS中,宜將最一般的條件放在最上面,并依次向下,最下面放最特殊的。
在W3C規(guī)范中,也規(guī)定了鏈接的聲明順序:
在 CSS 定義中,a:hover 必須被置于 a:link 和 a:visited 之后,才是有效的。
在 CSS 定義中,a:active 必須被置于 a:hover 之后,才是有效的。
定義局部鏈接樣式
在CSS中寫上a:link{}這樣的定義會使整個頁面的鏈接樣式改變,但有些局部鏈接需要特殊化,這個問題也不難解決,只要在鏈接樣式定義的前面加上指定的id或class就可以了。
復(fù)制代碼
代碼如下:#sidebar a:link, #sidebar a:visiteid {
color:#FF0000;
text-decoration:none;
}
#sidebar a:hover, #sidebar a:active {
color:#000000;
text-decoration:underline;
}
HTML調(diào)用:
復(fù)制代碼
代碼如下:<div id="sidebar"><a href="aa.aspx" target="_blank">鏈接到aa頁面<a></div>
class的定義方法和id相同,只要將#sidebar改為.sidebar就行了,還有一種方法是直接定義鏈接的樣式,那樣更直接,不過調(diào)用時比較麻煩,需要給每個特定的鏈接加上定義的代碼。
復(fù)制代碼
代碼如下:a.redlink a:link, a.redlink a:visiteid {
color:#FF0000;
text-decoration:none;
}
a.redlink a:hover, a.redlink a:active {
color:#000000;
text-decoration:underline;
background:#FFFFFF;
}
相關(guān)文章
- html5 的a標(biāo)簽是可以撥電話的,通過其Href屬性來實現(xiàn),需要的朋友可以了解下2013-11-04
- a標(biāo)簽的偽類只不過是又結(jié)合了不同的動作順序,動作的觸發(fā)順序決定了偽類的順序必須按lvha來寫,接下來為大家詳細(xì)介紹下,感興趣的朋友不妨參考下2013-09-27
- 去掉a標(biāo)簽超鏈接的虛線框的方法,需要的朋友可以參考下。2011-11-23
- 上面是偽類的正確順序,簡稱 lvha(love-ha)。你一直知道這個順序但是為什么這樣呢?原理是怎么樣的?2011-07-22
- 一組專門的預(yù)定義的類稱為偽類,主要用來處理超鏈接的狀態(tài)。超鏈接文字的狀態(tài)可以通過偽類選擇符+樣式規(guī)則來控制2013-12-09