您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關css如何分辨偽類和偽元素?偽類和偽元素的各自的區別與用法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一.偽類(用于向某些選擇器添加特殊的效果)
偽類存在的意義是為了通過選擇器找到那些不存在與DOM樹中的信息以及不能被常規CSS選擇器獲取到的信息。偽類由一個冒號:開頭,冒號后面是偽類的名稱和包含在圓括號中的可選參數。任何常規選擇器可以再任何位置使用偽類。偽類語法不區別大小寫。一些偽類的作用會互斥,另外一些偽類可以同時被同一個元素使用。并且,為了滿足用戶在操作DOM時產生的DOM結構改變,偽類也可以是動態的。
偽類包含兩種:狀態偽類和結構性偽類。
狀態偽類是基于元素當前狀態進行選擇的。在與用戶的交互過程中元素的狀態是動態變化的,因此該元素會根據其狀態呈現不同的樣式。當元素處于某狀態時會呈現該樣式,而進入另一狀態后,該樣式也會失去。常見的狀態偽類主要包括:
:link 應用于未被訪問過的鏈接;
:hover 應用于鼠標懸停到的元素;
:active 應用于被激活的元素;
:visited 應用于被訪問過的鏈接,與:link互斥。
:focus 應用于擁有鍵盤輸入焦點的元素。
結構性偽類是css3新增選擇器,利用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 選擇的元素里面沒有任何內容。
例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>偽類</title> <style> .demo { width: 200px; height: 500px; margin: 50px auto; text-align: center; } .tab_content { height: 50px; background: red; margin-bottom: 10px; } #tab1:target, #tab2:target, #tab3:target { background:blue; line-height: 50px; } </style> </head> <body> <div class="demo"> <ul class="tabs"> <li><a href="#tab1">標簽一</a></li> <li><a href="#tab2">標簽二</a></li> <li><a href="#tab3">標簽三</a></li> </ul> <div id="tab1" class="tab_content">tab1</div> <div id="tab2" class="tab_content">tab2</div> <div id="tab3" class="tab_content">tab3</div> </div> </body> </html>
效果圖1:
效果圖2:
上面效果圖1與效果圖2的區別在于當我單擊標簽一以后,tab1盒子的背景色由紅色變為藍色,字體顏色變為白;當點擊標簽二時,就會變成tab2發生變化,點擊標簽三也一樣。
二:偽元素(用于將特殊的效果添加到某些選擇器)
偽元素是對元素中的特定內容進行操作,而不是描述狀態。它的操作層次比偽類更深一層,因此動態性比偽類低很多。實際上,偽元素就是選取某些元素前面或后面這種普通選擇器無法完成的工作。控制的內容和元素是相同的,但它本身是基于元素的抽象,并不存在于文檔結構中!
常見的偽元素選擇器包括:
:first-letter 選擇元素文本的第一個字(母)。
:first-line 選擇元素文本的第一行。
:before 在元素內容的最前面添加新內容。
:after 在元素內容的最后面添加新內容。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .demo { width: 500px; height: 500px; margin: 50px auto; text-align: center; } .spliter::before, .spliter::after { content: ''; display: inline-block; border-top: 1px solid black; width: 200px; margin: 5px; } </style> </head> <body> <div class="demo"> <p class="spliter">分割線</p> </div> </body> </html>
效果圖:
以上就是css如何分辨偽類和偽元素?偽類和偽元素的各自的區別與用法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。