nth-child和nth-of-type是css的兩個偽選擇子。在應用中,這兩者常常容易混淆。這裡把它們拿出來仔細做個對比,看看這兩者是怎麼找出元素的。本文主要介紹了詳解CSS nth-child與nth-of-type的元素查找方式的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。
nth-child(n) —— 尋找第n個子元素
nth-of-type(n) —— 尋找相同類型元素裡的第n個元素
看這個定義也許還不是很清楚他們的差別,我們一點點來區分。
p:nth-child(2) 與p:nth-pf-type(2)
HTML程式碼如下
<p> <p style="float:left;width:200px;"> <p>pgh1</p> <p>pgh2</p> <p>pgh3</p> <p>pgh4</p> </p> <p style="float:left;width:200px;"> <h5>p1</h5> <h5>p2</h5> <h5>p3</h5> <h5>p4</h5> </p>
分別套用兩個樣式, 都是找第二個元素
p:nth-child(2) { color: red; font-weight:bold; } h5:nth-of-type(2) { color: blue; font-weight:bold; }
結果:兩者都套用成功。
現在我們對HTML程式碼做點改動,讓他們出現一些不同。我們將第一個p元素和第一個h5元素改為label,程式碼如下:
<p> <p style="float:left;width:200px;"> <label>pgh1</label> <p>pgh2</p> <p>pgh3</p> <p>pgh4</p> </p> <p style="float:left;width:200px;"> <label>p1</label> <h5>p2</h5> <h5>p3</h5> <h5>p4</h5> </p>
樣式不變,這時再來看效果,發現nth-of -type(2)結果變了,這時高亮的是p3。到這裡也算符合我們的邏輯。 h5:nth-of-type(2)要找的是第二個h5類型的元素,也就是p3。
繼續改變HTML程式碼。我們恢復第一個p元素和第一個h5元素,將第二個p元素和第二個h5元素改為label,樣式仍不變,結果會怎麼樣呢?
HTML如下:
<p> <p style="float:left;width:200px;"> <p>pgh1</p> <label>pgh2</label> <p>pgh3</p> <p>pgh4</p> </p> <p style="float:left;width:200px;"> <h5>p1</h5> <label>p2</label> <h5>p3</h5> <h5>p4</h5> </p>
CSS 不變:
p:nth-child(2) { color: red; font-weight:bold; } h5:nth-of-type(2) { color: blue; font-weight:bold; }
結果:nth-child沒有效果,nth-of-type高亮的是p3。
為什麼會這樣呢?
nth-child 是尋找一堆兄弟元素裡的第二個元素,不管那個元素是什麼,只要它排行老二。這裡左側p找到的是,右側p找到的是。找到之後,再和前面的選擇符進行匹配,如果匹配對了,那就套用樣式。前面的選擇符是p,也就是要求元素是p類型,但這裡都是label,不匹配,兩個元素都不會套用這個樣式。
nth-of-type 是在一堆兄弟元素裡找到相同HTML標記類型(Markup Type)元素中排行第二的元素。在左側的p中,
pgh3
是p類型裡排行第二的元素;在右側的p中,pgh3
則不會。所以,nth-child和nth-of-type的不同之處就是找出元素的方式不同。前者是找出兄弟元素中某個絕對位置的元素,後者是尋找同類型元素中某個絕對位置的元素。同樣之處是,兩者都是找到元素之後再與前面的選擇符進行匹配,這裡的匹配方式是一樣的。
稍微往下延伸,清楚了查找方式,那麼不管前面的選擇符怎麼變,最後都是先查找到元素再與前面的選擇符進行匹配。也就是說選擇符與他們的尋找方式沒有關係。弄清楚這個就不會被不同的組合混淆了。
p:nth-child(2) 正確:找出第二個元素,而這個元素是p。錯誤:找出第二個為p的元素
.info:nth-child(2) 正確:找出第二個元素,而這個元素的class包含"info"。錯誤:尋找第二個class包含"info"的元素。
p:nth-of-type(2) 尋找相同HTML標記類型中排行第二的元素,且這個元素是p(或直覺的說尋找第二個p類型元素)
.info:nth-of-type(2) 尋找相同HTML標記類型中排行第二的元素,且這個元素的class包含"info"
相關推薦;
PHP的數組中提高元素查找與元素去重的效率的技巧解析,php數組_PHP教程
#CSS3中nth-child與nth-of-type的區別詳解
#以上是CSS nth-child與nth-of-type的元素查找方式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!