CSS初探12

Head First HTML與CSS

第十章 div與span

CSS——掌控頁(yè)面的表現(xiàn)


<a>元素的不同狀態(tài)

鏈接的樣式表現(xiàn)與其他元素稍有不同,取決于具體環(huán)境,它們會(huì)瞬間改變樣式。

未訪問(wèn)的鏈接,稱為“鏈接”,默認(rèn)為藍(lán)色。訪問(wèn)過(guò)的鏈接,稱為“已訪問(wèn)的鏈接”,使用不同的顏色顯示,默認(rèn)為紫色。把鼠標(biāo)放在一個(gè)鏈接上,但不點(diǎn)擊,稱為“懸?!?。在一些瀏覽器上,鼠標(biāo)懸停在鏈接上時(shí)你會(huì)看到一個(gè)工具提示,它會(huì)顯示“title”屬性的文本,如果看得更仔細(xì)一點(diǎn),你會(huì)發(fā)現(xiàn)懸停在鏈接上時(shí),它會(huì)有一種不同的樣式。

因此,<a>元素的樣式會(huì)根據(jù)它的狀態(tài)(未訪問(wèn),已訪問(wèn),懸停等)而改變。

如何根據(jù)元素的狀態(tài)指定樣式?

如下:

a:link{

color:green;

}

a:visited{

color:red;

}

a:hover{

color:yellow;

}

第一個(gè)選擇器應(yīng)用于未訪問(wèn)的鏈接,第二個(gè)選擇器應(yīng)用于已訪問(wèn)的鏈接,第三個(gè)選擇器應(yīng)用于懸停狀態(tài)的鏈接。

如果把<a>元素當(dāng)成一個(gè)普通元素來(lái)指定樣式,如:

a{color:red;}

那么鏈接會(huì)在任何狀態(tài)下保持同種樣式,無(wú)法做到用戶友好。

還有另外兩種狀態(tài):focus和active。

focus:瀏覽器將焦點(diǎn)放在鏈接上時(shí)為焦點(diǎn)(focus)狀態(tài)(Tab鍵輪流訪問(wèn)頁(yè)面上所有鏈接,瀏覽器訪問(wèn)到某個(gè)鏈接時(shí),這個(gè)鏈接就擁有“焦點(diǎn)”)。

active:用戶第一次單擊一個(gè)鏈接時(shí),就處于活動(dòng)(active)狀態(tài)。

偽類

上述:link,:visited,:hover其實(shí)就是偽類選擇器,類是指創(chuàng)建一個(gè)分組,放入一些元素,可以對(duì)他們一起指定樣式;而偽類就像一個(gè)類,但不是真正的類,你可以對(duì)偽類指定樣式,但是并沒(méi)在HTML中輸入這些偽類。

瀏覽器會(huì)自主檢查每個(gè)<a>元素的狀態(tài),把它添加到正確的偽類中。例如,如果一個(gè)鏈接已經(jīng)訪問(wèn)過(guò),它會(huì)被放在“:visited”偽類中。因此,這些類確實(shí)是存在,瀏覽器在后臺(tái)向這些類中增加和刪除元素。

偽類不僅僅能處理鏈接,還能處理其他元素。例如偽類:first-child對(duì)應(yīng)元素的第一個(gè)子元素,:last-child對(duì)應(yīng)元素的最后一個(gè)子元素。如<blockquote>中的第一個(gè)和最后一個(gè)段落。

層疊

HTML的CSS樣式表來(lái)源有三種:作者編寫(xiě)的樣式表,用戶創(chuàng)建的樣式表,瀏覽器本身的默認(rèn)樣式表。瀏覽器確定要對(duì)一個(gè)元素應(yīng)用哪個(gè)樣式時(shí),會(huì)使用所有這些樣式表,按優(yōu)先級(jí)排序?yàn)椋鹤髡?、用戶、瀏覽器的樣式表。

給定一組樣式表中的一組樣式,瀏覽器以層疊的方式確定一個(gè)元素究竟應(yīng)用哪個(gè)樣式。假設(shè)頁(yè)面上有一個(gè)<h1>元素,我們想知道這個(gè)元素的font-size屬性。步驟如下:

1.收集所有樣式表

包括Web頁(yè)面作者的樣式表、用戶增加的樣式表和瀏覽器的默認(rèn)樣式。

2.找到所有匹配的聲明

例如,我們要找font-size屬性,所以要查看所有可能選擇<h1>元素的選擇器的font-size聲明。檢查所有樣式表,找出所有匹配<h1>且有font-size屬性的規(guī)則。

3.現(xiàn)在對(duì)所有匹配的規(guī)則排序

既然得到了所有的規(guī)則,現(xiàn)在按作者、讀者、瀏覽器的順序排序。

4.按特定性大小對(duì)三種來(lái)源的聲明分別排序

特定性大的優(yōu)先。簡(jiǎn)單來(lái)說(shuō),如果一個(gè)規(guī)則能更準(zhǔn)確地選擇一個(gè)元素,那么這個(gè)規(guī)則更特定。例如“blockquote h1”比"h1"更特定。具體特定性判斷方法之后介紹。

5.對(duì)于沖突的規(guī)則(來(lái)源相同、特定性相同),按照它們?cè)诟髯詷邮奖砝锍霈F(xiàn)的順序進(jìn)行排序

后面的優(yōu)先,覆蓋前面的。

這樣得到的有序列表中的第一個(gè)規(guī)則就是我們應(yīng)用到這個(gè)元素的樣式規(guī)則。

6.如果在層疊的所有規(guī)則中,沒(méi)有找到匹配的屬性,就要使用繼承。對(duì)于能繼承的屬性,瀏覽器會(huì)查看這個(gè)元素的祖先,從父元素開(kāi)始,嘗試找到這個(gè)屬性的值。如果找到了,就會(huì)應(yīng)用。

7.如果這個(gè)屬性不能繼承或祖先也沒(méi)有指定該屬性,就會(huì)應(yīng)用瀏覽器的默認(rèn)樣式。

特定性具體判斷方法

從三位的特定數(shù)計(jì)算開(kāi)始。

初始都是:0 0 0

如果該選擇器包含id,每個(gè)id在百位上加1。

如果該選擇器包含類或偽類,每個(gè)類或偽類在十位上加1。

如果該選擇器包含元素名,每個(gè)元素名在個(gè)位上加1。

例如:

h1 001

h1.blue 011

ol li p 003

em 001

.green 010

span.cd 011

a:link 011

#elixirs h1 101

#sidebar 100

綜合考慮id、類和元素后,得到的特定數(shù)越大,其特定性越強(qiáng)。

類似“h1,h2”規(guī)則,可以拆開(kāi)來(lái)看 都是001。

讀者樣式對(duì)作者樣式的覆蓋

讀者可能會(huì)覆蓋一個(gè)樣式,在他的屬性聲明最后放置一個(gè)“!important”,例如:

h1{

font-size:200%

!important;

}

這會(huì)覆蓋作者的樣式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,163評(píng)論 1 92
  • 學(xué)習(xí)CSS的最佳網(wǎng)站沒(méi)有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_閱讀 1,189評(píng)論 0 1
  • 1.CSS 元素選擇器 最常見(jiàn)的 CSS 選擇器是元素選擇器。換句話說(shuō),文檔的元素就是最基本的選擇器。如果設(shè)置 H...
    饑人谷_小侯閱讀 947評(píng)論 0 1
  • 本文為閱讀《Head First HTML 與 CSS》的css部分的讀書(shū)筆記,方便回顧書(shū)上的知識(shí),另一篇為Hea...
    兼續(xù)閱讀 1,938評(píng)論 0 17
  • 一:在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過(guò)程中,你是如何考慮他的UI、安全性、高性能、SEO、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,365評(píng)論 0 1

友情鏈接更多精彩內(nèi)容