【CSS3】詳解僞元素與僞類

1.僞類html

僞類選擇元素基於的是當前元素處於的狀態,或者說元素當前所具備的特性,而不是元素的id、class、屬性等靜態的標誌。因爲狀態是動態變化的,因此一個元素達到一個特定狀態時,它可能獲得一個僞類的樣式;當狀態改變時,它又會失去這個樣式。由此能夠看出,它的功能和class有些相似,但它是基於文檔以外的抽象,因此叫僞類。web

僞類 做用
:active 將樣式添加到被激活的元素
:focus 將樣式添加到被選中的元素
:hover 當鼠標懸浮在元素上方時,向元素添加樣式
:link 將特殊的樣式添加到未被訪問過的連接
:visited 將特殊的樣式添加到被訪問過的連接
:first-child 將特殊的樣式添加到元素的第一個子元素
:lang 容許創做者來定義指定的元素中使用的語言

僞類的定義:post

(1)僞類存在的意義是爲了經過選擇器找到那些不存在與DOM樹中的信息以及不能被常規CSS選擇器獲取到的信息。spa

(2)僞類由一個冒號:開頭,冒號後面是僞類的名稱和包含在圓括號中的可選參數。設計

(3)任何常規選擇器能夠在任何位置使用僞類。僞類語法不區別大小寫。一些僞類的做用會互斥,另一些僞類能夠同時被同一個元素使用。而且,爲了知足用戶在操做DOM時產生的DOM結構改變,僞類也能夠是動態的。code

i:first-child {color: red}
<p>
    <i>first</i>
    <i>second</i>
</p>

不用僞類,但願達到上述效果,直接添加類:orm

.first-child {color: red}
<p>
    <i class="first-child">first</i>
    <i>second</i>
</p>

而使用僞元素:first-letter,第一個字母:htm

p:first-letter {color: red}
<p>I am stephen lee.</p>

若是想要達到上述效果,咱們能夠這樣作:blog

p:first-letter {color: red}
<p><span>I<span> am stephen lee.</p>

給I添加span標籤才能達到這種效果,有時本身幹想一想不出區別,還得親自動手,如今比較清楚僞類和僞元素的區別了。接口

前五個僞類在https://i.cnblogs.com/EditPosts.aspx?postid=7490649&update=1講過

:focus怎樣使用呢?

一般咱們點擊用戶名和密碼輸入框時,會改變顏色,這就用到了:focus

input:focus { background-color:blue; }
用戶名:<input type="text" height="40px" width="200px"/>

2.僞元素

與僞類針對特殊狀態的元素不一樣的是,僞元素是對元素中的特定內容進行操做,它所操做的層次比僞類更深了一層,也所以它的動態性比僞類要低得多。實際上,設計僞元素的目的就是去選取諸如元素內容第一個字(母)、第一行,選取某些內容前面或後面這種普通的選擇器沒法完成的工做。它控制的內容實際上和元素是相同的,可是它自己只是基於元素的抽象,並不存在於文檔中,因此叫僞元素。

僞元素 做用
:first-letter 將特殊的樣式添加到文本的首字母
:first-line 將特殊的樣式添加到文本的首行
:before 在某元素以前插入某些內容
:after 在某元素以後插入某些內容

僞元素的定義:

(1)僞元素在DOM樹中建立了一些抽象元素,這些抽象元素是不存在於文檔語言裏的(能夠理解爲html源碼)。好比:documen接口不提供訪問元素內容的第一個字或者第一行的機制,而僞元素可使開發者能夠提取到這些信息。而且,一些僞元素可使開發者獲取到不存在於源文檔中的內容(好比常見的::before,::after)。

(2)僞元素的由兩個冒號::開頭,而後是僞元素的名稱。

(3)使用兩個冒號::是爲了區別僞類和僞元素(CSS2中並無區別)。固然,考慮到兼容性,CSS2中已存的僞元素仍然可使用一個冒號:的語法,可是CSS3中新增的僞元素必須使用兩個冒號::

(4)一個選擇器只能使用一個僞元素,而且僞元素必須處於選擇器語句的最後。

以後會開一篇關於:before與:after的使用

 :after僞類+zoom是目前最使用的清除浮動元素影響的方法

相關文章
相關標籤/搜索