深入理解 nth-child 和 nth-of-type 的區別
ele:nth-of-type(n) 為什麼叫 of-type ,就是說它是以「type」來區分的,也就是說ele:nth-of-type(n)指的是父元素下第n個ele元素。
ele:nth-child(n) 指的是父元素下第n個元素且這個元素是ele,若沒有,則選擇失敗。
舉例:
<style> .div-parent span:nth-child(2){ color:red; } .div-parent span:nth-of-type(2){ color:yellow; } </style> <div class="div-parent"> <p>這是段落P</p> <span>這是span1</span> <span>這是span2</span> </div>
結果為:
這是段落P
這是span1 這是span2
說明:
span:nth-child(2) 選擇的是所有子元素中的第二個元素,這個元素必須是span
span:nth-of-type(2) 選擇的是所有的span子元素中的第二個元素。
如果在nth-child 和 nth-of-type前不指定標籤呢?
舉例:
<style> .div-parent :nth-child(2){ color:red; } .div-parent :nth-of-type(2){ color:yellow; } </style> <div class="div-parent"> <p>這是段落P1</p> <span>這是span1</span> <span>這是span2</span> <p>這是段落P2</p> </div>
結果為:
這是段落P1
這是span1 這是span2
這是段落P2
說明:
:nth-child(2) 不管是否指定標籤,:nth-child(2)選擇的都是第二個子元素,只不過如果指定了標籤,那第二個元素就必須是該標籤元素,否則選擇失敗。
:nth-of-type(2) 它選中了兩個元素,分別是父級.div-parent 下第二個p標籤和第二個span標籤,說明,:nth-of-type(2) 選擇的是各個子類型標籤的第二個元素。
最後,我們了解一下,:nth-child(n) 和 :nth-of-type(n) 括號中的n代表什麼?
說明:
上述選擇器中的n,可以是數字,關鍵字和公式
① 數字:前面舉例已經說明了, 1就是第一個 、2就是第二個
② 關鍵字: odd 和 even 匹配下標是奇數或偶數的子元素關鍵字,第一個子元素下標是1,那odd就是第1,3,5,7…個子元素
③ 公式:就是一種算數表達式,表示周期,n是從0開始計數
比如 2n,就是下標是2的倍數的子元素,其實就等同於even
比如n+2,就是下標不小於2的子元素,其實就是第2,3,4,5,6…個
特別說明下面這個例子:
<style> .div-parent .item:nth-of-type(2){ color:yellow; } </style> <div class="div-parent"> <p>這是段落P1</p> <span>這是span1</span> <span class="item">這是span2</span> </div>
結果:
這是段落P1
這是span1 這是span2
說明:
.item:nth-of-type(2) ,指的是span2,就等同於 span:nth-of-type(2)。而 .item:nth-of-type(1)是無效的,選擇失敗。因為span1,沒有這個類.item
所以說,如果 :nth-of-type(2) 前指定的元素是類,選擇的是指定類對應的標籤下的第二個元素,且這個元素的類是指定類。