這篇文章將為大家詳細講解有關(guān)CSS偽類有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、洛浦網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、成都做商城網(wǎng)站、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為洛浦等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
無論您是初學者還是經(jīng)驗豐富的CSS開發(fā)人員,您都可能聽說過偽類。最著名的偽類可能是:hover,當指針設(shè)備(例如鼠標)指向它時,它允許我們在處于懸停狀態(tài)時對元素進行樣式化。
按照我們之前關(guān)于margin:auto和CSS Floats的內(nèi)容介紹,我們在這篇文章中對偽類進行了更深入的研究。我們將看到什么是偽類,它們是如何工作的,我們?nèi)绾螌λ鼈冞M行分類,以及它們與偽元素的區(qū)別。
什么是偽類?
一個偽類是我們可以為了增加CSS選擇一個關(guān)鍵字定義一個特殊狀態(tài)的屬于HTML元素。我們可以使用冒號語法 將偽類添加到CSS選擇器,:如下所示:a:hover{ ... }
一個CSS類是我們可以添加到HTML我們想申請,同一款式的規(guī)則元素,例如頂部菜單項或側(cè)邊欄小工具的標題屬性。換句話說,我們可以使用CSS類對以某種方式相似的HTML元素進行分組或分類。
偽類與它們類似,因為它們也用于將樣式規(guī)則添加到共享相同特征的元素。
但是,雖然真正的類是用戶定義的并且可以在源代碼中被發(fā)現(xiàn),但是例如,基于所屬的HTML元素的當前狀態(tài),UA(用戶代理)(例如web瀏覽器)添加
偽類和偽元素可以在CSS選擇器中使用,但在HTML源代碼中不存在。相反,它們在某些條件下由UA“插入”以用于在樣式表中尋址。
偽類的目的
常規(guī)CSS類的工作是對元素進行分類或分組。開發(fā)人員知道他們的元素是如何分組的:他們可以形成類似“菜單項”,“按鈕”,“縮略圖”等的類來分組,以及后來的類似元素的樣式。這些分類基于開發(fā)人員自己給出的元素特征。
例如,如果開發(fā)者決定使用a
[...]
然而,HTML元素具有基于其狀態(tài),位置,性質(zhì)以及與頁面和用戶的交互的共同特征。這些是HTML代碼中通常不標記的特征,但我們可以使用 CSS中的偽類來定位它們,例如:
1、一個元素,它是其父元素中的最后一個子元素
2、訪問的鏈接
3、一個全屏的元素。
這些是偽類通常所針對的特征。為了更好地理解類和偽類之間的區(qū)別,我們假設(shè)我們使用該類.last來標識不同父容器中的最后一個元素。
我們可以使用以下CSS設(shè)置這些最后一個子元素的樣式:
li.last { text-transform: uppercase; } option.last{ font-style:italic; }
但是當最后一個元素改變時會發(fā)生什么?好吧,我們必須將.last類從前一個元素移動到當前元素。
更新類的麻煩可以留給用戶代理,至少對于元素中常見的那些特征(并且最后一個元素是它可以獲得的常見元素)。擁有預定義的:last-child偽類確實非常有用。這樣,我們不必指示 HTML代碼中的最后一個元素,但我們?nèi)匀豢梢允褂靡韵翪SS來設(shè)置它們的樣式:
li:last-child { text-transform: uppercase; } option:last-child { font-style:italic; }
偽類的主要類型
偽類有很多種,它們都為我們提供了基于其特征無法訪問或難以訪問的特征來定位元素的方法。這是MDN 中標準偽類的列表。
1.動態(tài)偽類
動態(tài)偽類根據(jù)它們?yōu)轫憫?yīng)用戶的交互而轉(zhuǎn)換的狀態(tài)動態(tài)地添加到HTML元素和從HTML元素中刪除。一些的動態(tài)偽類的例子是,,,和,所有這些都可以被添加到錨定標記。:hover:focus:link:visited
a:visited{ color: #8D20AE; } .button:hover, .button:focus{ font-weight: bold; }
2.基于狀態(tài)的偽類
基于狀態(tài)的偽類在處于特定靜態(tài)時添加到元素中。其中一些最著名的例子是:
:checked可以應(yīng)用于復選框()
:fullscreen 定位當前以全屏模式顯示的任何元素
:disabledHTML元素,可以是在已禁用模式,例如,
最流行的基于狀態(tài)的偽類必須是:checked,它標記是否選中了復選框。
.checkbox:checked + label{ font-style:italic; } input:disabled{ background-color: #EEEEEE; }
3.結(jié)構(gòu)偽類
結(jié)構(gòu)偽類根據(jù)它們在文檔結(jié)構(gòu)中的位置對元素進行分類。它最常見的例子是:first-child,:last-child和:nth-child(n)- 都可以用來根據(jù)容器的位置來定位容器內(nèi)的特定子元素 - 并且:root它以DOM中最高級別的父元素為目標。
4.雜項偽類
還有一些難以分類的雜項偽類,例如:
:not(x)選擇與選擇器x不匹配的元素
:lang(language-code) 選擇哪些內(nèi)容采用特定語言的元素
:dir(directionality)選擇具有給定方向性內(nèi)容的元素(從左到右或從右到左)。
p:lang(ko){ background-color: #FFFF00; } :root{ background-color: #FAEBD7; }
nth-child與類型 Pseudo-Classes的第n個
其中一件關(guān)于偽類最難的事情是可能理解的差別:nth-child和:nth-of-type偽類。
兩者都是結(jié)構(gòu)偽類,并在父元素(容器)內(nèi)標記特定元素,但方式不同。
假設(shè)?為2,然后:nth-of-child(n)靶向是一個元素它的父元素的第二個孩子,以及:nth-of-type(n)目標第二的中相同類型的元件的(例如段落)父元素內(nèi)。
我們來看一個例子吧。
/* a paragraph that's also the second child inside its parent element */ p:nth-child(2) { color: #1E90FF; // lightblue } /* the second paragraph inside a parent element */ p:nth-of-type(2) { font-weight:bold; }
讓我們看看這個簡短的CSS樣式如何在兩種不同的情況下使用HTML。
案例1
在案例1中,a中的第二個元素
但是,如果父元素確實具有第二個段落,則該nth-of-type(2)規(guī)則將適用,因為此規(guī)則僅查找
元素,而不關(guān)心父元素內(nèi)的其他類型的元素(例如無序列表)。
在我們的示例中,nth-of-type(2)規(guī)則將設(shè)置第二個段落,即子3。
Paragraph 1, Child 1
Unordered List 1, Child 2
Paragraph 2, Child 3
案例2
在第二種情況下,我們將無序列表移到第三位,第二段將在它之前。這意味著將應(yīng)用規(guī)則:nth-child(2)和:nth-of-type(2)規(guī)則,因為第二個段落也是其父
Paragraph 1, Child 1
Paragraph 2, Child 2
Unordered List 1, Child 3
如果你想更多地了解:nth-of-child和:nth-of-type偽類之間的差異,CSS Tricks上有一個很棒的帖子。如果您使用SASS,F(xiàn)amily.scss可以幫助您創(chuàng)建復雜的nth- child'ified元素。
偽類與偽元素
當我們談?wù)搨晤悤r,理解它們與偽元素的區(qū)別也很重要,以免混淆它們。
Pseudo-elements用戶代理也添加了諸如::before和::after(參見本教程如何使用它們),并且可以使用CSS對它們進行定位和設(shè)置樣式,就像偽類一樣。
但是,雖然我們使用偽類來選擇文檔樹中僅存在未單獨標記的HTML元素,但偽元素允許我們根據(jù)DOM(例如和)或僅作為目標通常不存在于DOM中的元素。現(xiàn)有元素的某些部分(例如或)。::before::after::first-letter::placeholder
語法也有區(qū)別。偽元素通常用雙冒號識別::,而偽類用單冒號識別:。
這可能導致混亂,如CSS2中,偽元素也標記為單個冒號 - 瀏覽器仍接受偽元素的單冒號語法。
我們用CSS來定位偽類和偽元素之間也存在差異。
1.它們在CSS選擇器序列中的位置
偽元素只能出現(xiàn)在選擇器序列之后,而偽類可以放在CSS選擇器序列中的任何位置。
例如,您可以
ul > :last-child.red { color: #B0171F; }
要么
ul > .red:last-child { color: #B0171F; }
選擇器的第一個序列選擇
讓我們嘗試用偽元素做類似的事情。
ul > .red::after { display: block; content: 'red'; color: #B0171F; }
上面的CSS代碼是有效的,文本“red”將出現(xiàn)在
另一方面,這段代碼不起作用,因為我們無法改變選擇器序列中偽元素的位置。
ul > ::after.red { display: block; content: 'red'; color: #B0171F; }
2.選擇器序列中的出現(xiàn)次數(shù)
此外,只有一個偽元素可以出現(xiàn)在選擇器旁邊,而偽類可以在組合有意義的情況下相互組合。例如,為了目標,同時也是只讀的,我們可以創(chuàng)建偽類組合的第一個孩子元素:first-child,并:read-only以下列方式:
:first-child:read-only { color:#EEEEEE; }
jQuery選擇器擴展
具有:語法的選擇器代碼并不總是構(gòu)成適當?shù)腃SS偽類。如果您曾經(jīng)使用過jQuery,那么您可能已經(jīng)使用了許多具有:語法的選擇器,例如$(':checkbox'),$(':input')和$(':selected')。
重要的是要知道這些不是 jQuery所針對的CSS偽類。它們被稱為jQuery選擇器擴展。
jQuery選擇器擴展允許您使用更簡單的關(guān)鍵字來定位HTML元素。它們中的大多數(shù)是多個普通CSS選擇器的組合,它們用單個關(guān)鍵字表示。
/* Change the font of all input-related HTML elements, like button, select, and input */ $( ":input" ).css("font-family","courier new")
關(guān)于CSS偽類有什么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。