1、僞類
CSS僞類用於向某些選擇器添加特殊的效果,
在W3規範中,CSS僞類有以下幾個:
CSS2.1
:active:向被激活的元素添加樣式(激活是指點擊鼠標那一下)
:focus:向擁有鍵盤輸入焦點的元素增長樣式
:hover:當鼠標懸浮在元素上方時,向元素增長樣式
:link:向未被訪問的連接增長樣式
:visited:向已被訪問的連接增長樣式
:first-child:向元素的第一個子元素增長樣式
:lang:向帶有指定lang屬性的元素增長樣式
CSS3中的僞類(注意CSS3級別的僞類可能缺少瀏覽器支持,可能要準備相應的JS支持):
:nth-child
:nth-last-child
:nth-of-type
:first-of-type
:last-of-type
:empty
:target
:checked
:enabled
:disabled
提示:
一、僞類名稱對大小寫不敏感。好比:ACTIVE,Active,active都是合法的。
二、l v h a原則。按照 link 、visited、hover、active 的順序來寫。
三、在IE中必須聲明<!DOCTYPE>,first-child僞類纔會生效
四、僞類後面還可接選擇器
疑問:
對於first-child僞類,看下面的解釋:
一、p:first-child 匹配第一個<p>元素,
選擇器匹配做爲任何元素的第一個子元素的 p 元素,若是<p>元素不是第一個,則無效。
成功的例子:
html:
<body> <p> 哈哈哈 </p> <p> <i>AAA</i> <i>bbb</i> </p> <p> <i>CC</i> <i>DD</i> </p> <p lang="en">呵呵</p> </body>
css:
p:first-child{color: yellow;}
效果:
其餘<p>標籤內的元素不改變顏色。
失敗的例子:
html:
<body> <span></span> <p> 哈哈哈 </p> <p> <i>AAA</i> <i>bbb</i> </p> <p> <i>CC</i> <i>DD</i> </p> <p lang="en">呵呵</p> </body>
css:
p:first-child{color: yellow;}
效果:
沒有一個<p>標籤內的顏色改變爲黃色,由於沒有一個<p>標籤是做爲它的父元素的第一個元素。
二、p>i:first-child 匹配全部<p>元素的第一個<i>元素
選擇器匹配全部 <p> 元素中的第一個 <i> 元素,若是<i>元素不是第一個則無效。
成功的例子:
html:
<body> <p> <span>哈哈哈哈哈</span> <i>呵呵</i> 哈哈哈 <i>呵呵</i> </p> <p> <i>AAA</i> <i>bbb</i> </p> <p> <i>CC</i> <i>DD</i> </p> <p lang="en">呵呵</p> </body>
css:
p>i:first-child{color: green;}
效果:
,第一個<p>標籤內,因爲<i>不是第一個子元素,因此不會被選擇器選中,顏色不會變成綠色。
三、p:first-child i 匹配全部做爲第一個子元素<p>中的全部<i>元素
選擇器匹配全部做爲元素的第一個子元素的 <p> 元素中的全部 <i> 元素
成功的例子:
html:
<body> <p> <span>哈哈哈哈哈</span> <i>呵呵</i> 哈哈哈 <i>呵呵</i> </p> <p> <i>AAA</i> <i>bbb</i> </p> <p> <i>CC</i> <i>DD</i> </p> <p lang="en">呵呵</p> </body>
css:
p:first-child i{color: red;}
效果:
其餘<p>標籤不會被選中,顏色不會變成紅色。
對於lang僞類,看下面的例子:
css
效果:
2、僞元素
W3C規範中有4個僞元素:
CSS-1
:first-line
向文本的第一行添加樣式
:first-letter
向文本的第一個字母添加特殊樣式
CSS-2:
:after 在元素以後添加內容
:before 在元素以前添加內容
提示:
一、CSS3中規定僞元素的寫法是要用兩個冒號的,好比,::first-line,可是因爲一些IE瀏覽器不支持,因此如今變得既能夠用兩個冒號,也能夠用用一個冒號。
二、另外,:after和:before會在元素中添加內容,具體的方式相似於:
p:first-line{ color:red;}p:first-letter{ color:yellow;}
其中,若是同時出現first-line,first-letter,而且相互有衝突的屬性,那麼會按照first-letter裏面的屬性來設置衝突的那些屬性,而不是看其出現的前後順序。例如上例中,第一行的第一個字母(中文是第一個字)的顏色應該爲黃色。
3、僞類和僞元素的區別
一、僞類一開始單單只是用來表示一些元素的動態狀態,典型的就是連接的各個狀態(LVHA)。隨後CSS2標準擴展了其概念範圍,使其成爲了全部邏輯上存在但在文檔樹中卻無須標識的「幽靈」分類。
二、僞元素則表明了某個元素的子元素,這個子元素雖然在邏輯上存在,但卻並不實際存在於文檔樹中。
三、僞元素在一個選擇器中只能出現一次,而且只能出如今末尾。