您好,登錄后才能下訂單哦!
小編給大家分享一下CSS中偽類和偽元素是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、偽類
偽類包含兩種:狀態偽類(UI 偽類)和結構性偽類。
(1)狀態偽類是基于元素當前狀態進行選擇的。
在與用戶的交互過程中元素的狀態是動態變化的,因此該元素會根據其狀態呈現不同的樣式。當元素處于某狀態時會呈現該樣式,而進入另一狀態后,該樣式也會失去。
常見的狀態偽類主要包括:
:link 應用于未被訪問過的鏈接;
:hover 應用于鼠標懸停到的元素;
:active 應用于被激活的元素;
:visited 應用于被訪問過的鏈接,與:link互斥。
:focus 應用于擁有鍵盤輸入焦點的元素。
:target 應用于鏈接點擊后指向元素
前 4 個偽類的特指度相同,如果不按照這里列出的順序使用它們,瀏覽器可能不會顯示預期結果。為了好記,可以這么想:“LoVe? HA!”大寫字母就是每個偽類的頭一個字母。
input:focus {border:1px solid blue;}
會在光標位于 input 字段中時,為該字段添加一個藍色邊框。這樣可以讓用戶明確
地知道輸入的字符會出現在哪里。
<a href="#more_info">More Information</a> <h3 id="more_info">This is the information you are looking for.</h3> #more_info:target {background:#eee;}
會在用戶單擊鏈接轉向 ID 為 more_info的元素時,為該元素添加淺灰色背景。
利用dom樹進行元素過濾,通過文檔結構的互相關系來匹配元素,能夠減少class和id屬性的定義,使文檔結構更簡潔。
常見的包括:
: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 選擇的元素里面沒有任何內容。
二、偽元素
偽元素是對元素中的特定內容進行操作,而不是描述狀態。它的操作層次比偽類更深一層,因此動態性比偽類低很多。實際上,偽元素就是選取某些元素前面或后面這種普通選擇器無法完成的工作。控制的內容和元素是相同的,但它本身是基于元素的抽象,并不存在于文檔結構中!
常見的偽元素選擇器包括:
:first-letter 選擇元素文本的第一個字(母)。
:first-line 選擇元素文本的第一行。
:before 在元素內容的最前面添加新內容。
:after 在元素內容的最后面添加新內容。
三、注意
單冒號(:)用于 CSS3 偽類,雙冒號(::)用于 CSS3 偽元素,為了兼容某些瀏覽器,一般都采用單冒號
兼容性的問題,交給postcss去做。本文并未涉及兼容性的寫法,包括前綴問題,可以交給autoprefixer去做。(這句話啥意思沒懂,以后看看說的啥)
偽類(結構偽類)的效果可以通過添加一個實際的類來達到,而偽元素的效果則需要通過添加一個實際的元素才能達到,這也是為什么他們一個稱為偽類,一個稱為偽元素的原因。
四、偽元素的使用
(1) 清除浮動
.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>
以上是“CSS中偽類和偽元素是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。