首頁  >  文章  >  web前端  >  超連結的四種狀態的應用詳細講解_HTML/Xhtml_網頁製作

超連結的四種狀態的應用詳細講解_HTML/Xhtml_網頁製作

WBOY
WBOY原創
2016-05-16 16:41:521655瀏覽

雖然你認為可能原因是瀏覽器問題,但更多的可能是你樣式定義時順序錯誤。為了確保能看到不同狀態下的連結樣式,正確的樣式順序應該是:

" link - visited - hover - active "或" LVHA "(縮寫)。

核心內容:

每個選擇符selector都有一個「specificity」如果兩個selectors應用於同一個元素,具有較高specificity的選擇符將勝出,具有優先權。例如:

P.hithere {color: green;} /* specificity = 1,1 */P {color: red;} /* specificity = 1 */

任何設定了類別class=hithere的段落內容顯示為綠色而不是紅色。兩個selectors都設定了顏色,但是具有更高specificity的選擇符將勝出。

偽類如何影響specificity呢?它們具有完全相同的加權值,下列樣式具有相同的specificity加權值:

A:link {color: blue;} /* specificity = 1,1 */A:active {color: red;} /* specificity = 1,1 */A:hover {color: magenta;} /* specificity = 1,1 */A:visited {color: purple;} /* specificity = 1,1 */

這些都是用於超連結的樣式設定。大部分情況下需要同時設定其中的幾個樣式,例如,一個未被訪問的超連結在滑鼠懸停和點擊時可設定「滑鼠懸停」和「滑鼠啟動「兩種狀態下的不同樣式,由於上述三個規則都可應用於超連結,並且全部選擇符具備相同的specificity,那麼根據規則,最後一個樣式「勝出」。所以" active "式樣永遠不會顯示出來,因為它總是被" hover "式樣覆蓋(即" hover "優先)。現在再來分析已經被訪問過的超連結滑鼠懸停是什麼效果,結果永遠是purple紫色的:( ,因為它的" visited "式樣總是優先於其它的狀態樣式規則(包括" active "和" hover")而顯示。

這就是為什麼CSS1推薦樣式順序的原因:

A:linkA:visitedA:hoverA:active

實際上,開頭兩​​個樣式的順序可以調換,因為一個超連結不可能同時存在「未存取」和「已造訪」兩種狀態。 ( :link意思是" unvisited ";我不知道為什麼不這樣定義呢.)

CSS2現在允許偽類可以以「聯合成組」形式出現,例如:

A:visited:hover {color: maroon;} /* specificity = 2,1 */A:link:hover {color: magenta;} /* specificity = 2,1 */A:hover:active {color : cyan;} /* specificity = 2,1 */

They have the same specificity, but they apply to fundamentally different beasts, and so don't conflict. You can get hover-active combinations, for example.

如何理解本文當中所涉及到的「specificity」呢? specificity可以理解未簡單地連在一起的號碼字串,上面的一個例子:P.hithere {color: green;} /* specificity = 11 */P {color: red;} /* specificity = 1 */

這好像是一個基於十進制的簡單運算。然而計算「specificity」不能使用十進位演算法,例如你把15種選擇符連在一起使用、它們具有的「specificity」加權值還是比簡單的class選擇符低。舉例:

.hello {color: red;} /* specificity = 10 */HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI (color: green;} /* specificity = 15 */

" 10 "其實是一個「1」後面接著「零」、不是"十",我們可以用十六進位描述前面的樣式規則的specificitiy,像下面:

.hello {color: red;} /* specificity = 10 */HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI (color: green;} /* specificity = F */

唯一的問題是如果你想為第二個樣式規則增加兩個或更多的選擇符時,那時你就可能得到一個「17」的specificity、會再一次混淆。事實上specificity可能是無窮大的,所以為了避免更多的混亂,建議使用逗號來分隔specificity的值。

站長建議:反覆練習specificity的加權值的計算,網站CSS的設定體現了你控制頁面的能力,在動態網站開發中,CSS的地位也是非常重要的,多看資料,多練習,多來腳本之家!如果你喜歡本站就代為宣傳吧!謝謝閱讀。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn