僞類包含兩種:狀態僞類(UI 僞類)和結構性僞類。css
在與用戶的交互過程當中元素的狀態是動態變化的,所以該元素會根據其狀態呈現不一樣的樣式。當元素處於某狀態時會呈現該樣式,而進入另外一狀態後,該樣式也會失去。css3
常見的狀態僞類主要包括:segmentfault
:link 應用於未被訪問過的連接;
:hover 應用於鼠標懸停到的元素;
:active 應用於被激活的元素;
:visited 應用於被訪問過的連接,與:link互斥。
:focus 應用於擁有鍵盤輸入焦點的元素。
:target 應用於連接點擊後指向元素
前 4 個僞類的特指度相同,若是不按照這裏列出的順序使用它們,瀏覽器可能不會顯示預期結果。爲了好記,能夠這麼想:「LoVe? HA!」大寫字母就是每一個僞類的頭一個字母。瀏覽器
input:focus {border:1px solid blue;}
會在光標位於 input 字段中時,爲該字段添加一個藍色邊框。這樣可讓用戶明確
地知道輸入的字符會出如今哪裏。dom
<a href="#more_info">More Information</a> <h2 id="more_info">This is the information you are looking for.</h2> #more_info:target {background:#eee;}
會在用戶單擊連接轉向 ID 爲 more_info的元素時,爲該元素添加淺灰色背景。post
利用dom樹進行元素過濾,經過文檔結構的互相關係來匹配元素,可以減小class和id屬性的定義,使文檔結構更簡潔。設計
常見的包括:code
:first-child 選擇某個元素的第一個子元素;
:last-child 選擇某個元素的最後一個子元素;
:nth-child() 選擇某個元素的一個或多個特定的子元素;
:nth-last-child() 選擇某個元素的一個或多個特定的子元素,從這個元素的最後一個子元素開始算;
:nth-of-type() 選擇指定的元素;
:nth-last-of-type() 選擇指定的元素,從元素的最後一個開始計算;
:first-of-type 選擇一個上級元素下的第一個同類子元素;
:last-of-type 選擇一個上級元素的最後一個同類子元素;
:only-child 選擇的元素是它的父元素的惟一一個子元素;
:only-of-type 選擇一個元素是它的上級元素的惟一一個相同類型的子元素;
:empty 選擇的元素裏面沒有任何內容。
僞元素是對元素中的特定內容進行操做,而不是描述狀態。它的操做層次比僞類更深一層,所以動態性比僞類低不少。實際上,僞元素就是選取某些元素前面或後面這種普通選擇器沒法完成的工做。控制的內容和元素是相同的,但它自己是基於元素的抽象,並不存在於文檔結構中!orm
常見的僞元素選擇器包括:文檔
:first-letter 選擇元素文本的第一個字(母)。
:first-line 選擇元素文本的第一行。
:before 在元素內容的最前面添加新內容。
:after 在元素內容的最後面添加新內容。
單冒號(:)用於 CSS3 僞類,雙冒號(::)用於 CSS3 僞元素,爲了兼容某些瀏覽器,通常都採用單冒號
兼容性的問題,交給postcss去作。本文並未涉及兼容性的寫法,包括前綴問題,能夠交給autoprefixer去作。(這句話啥意思沒懂,之後看看說的啥)
僞類(結構僞類)的效果能夠經過添加一個實際的類來達到,而僞元素的效果則須要經過添加一個實際的元素才能達到,這也是爲何他們一個稱爲僞類,一個稱爲僞元素的緣由。
.clear:after { content: ''; display: block; clear: both; }
<style> * { padding: 0; margin: 0; } .spliter::before, .spliter::after { content: ''; display: inline-block; border-top: 1px solid black; width: 200px; margin: 5px; } </style></head><body> <p class="spliter">分割線</p></body>
5、參考文獻
http://www.javashuo.com/article/p-diaxzxtr-gu.html 詳解 CSS 屬性 - 僞類和僞元素的區別
http://www.javashuo.com/article/p-ufuvxcfm-cv.html 談談css僞類與僞元素《css設計指南》