1. 程式人生 > >CSS3之nth-child與nth-of-type

CSS3之nth-child與nth-of-type

    在css3中,有一系列類似的選擇器, 它們在jQuery中也有與之功能相同的用法,所以本文將這些選擇器中典型的2個進行說明,這樣就同時掌握了css3這型別選擇器和jquery這型別選擇器的用法。

nth-child與nth-of-type系列選擇器

       先用表格列出這2類選擇器

含義 nth-child類 nth-of-type類
第一個 :first-child :first-of-type
第n個 :nth-child(n) :nth-of-type(n)
最後一個 :last-child :last-of-type
倒數第n個 :nth-last-child(n) :nth-last-of-type(n)
唯一一個 :only-child :only-of-type

注:
1、當“:nth-child(n)”和“:nth-of-type(n)”選擇器中的n為一個表示式時,其中n是從0開始計算。
2、當表示式的值為0或小於0的時候,不選擇任何匹配的元素;
3、引數值的起始值始終是1

上述這條規則通用於“:nth-child(n)”和“:nth-of-type(n)”選擇器!!!

本文示例將要用到的html程式碼如下:

<body>
<!--程式碼結構: ul>li+div  -->
    <ul>
        <li>我是第1個li元素</li>
        <div>
          我是第1個div元素
        </div>
        <li>我是第2個li元素</li>
        <li>我是第3個li元素</li>
        <div>
          我是第2個div元素
        </div>
<div> 我是第3個div元素 </div> <li>我是第4個li元素</li> <li>我是第5個li元素</li> <div> 我是第4個div元素 </div> </ul> </body>

頁面效果如下(未加任何css樣式):
這裡寫圖片描述

nth-child與nth-of-type的準確含義

       先說明一下nth-child與nth-of-type的準確含義,然後我們用程式碼具體演示

B:nth-of-type(n)的含義:選擇B元素的父元素下的 與B同類型元素中的 第n個直接子元素為B元素
B:nth-child(n)的含義:選擇B元素的父元素下的 第n個直接子元素為B元素

下面我們用程式碼演示一下nth-child(n)的含義:

<style>
/*選擇li的父元素下的第2n個直接子元素為li元素*/
    li:nth-child(2n){
      color: blue;
    }
</style>

頁面效果如下:
這裡寫圖片描述

li:nth-child(2n){}表示li的父元素下的第2n個直接子元素是li元素時採用的樣式,所以:
上圖中li的父元素(即ul)下的第2個、第6個子元素是div,所以不採用樣式;
上圖中li的父元素(即ul)下的第4個、第8個子元素是li,所以採用樣式;

再用程式碼演示一下nth-of-type(n)的含義:

<style>
/*選擇li的父元素下的、與li同類型的、第2n個直接子元素為li元素*/
    ul li:nth-of-type(2n){
      background: red;
    }
</style>

頁面效果如下:
這裡寫圖片描述

li:nth-of-type(2n)表示li的父元素(即ul)下的、與li同類型的、第2n個直接子元素為li元素時採用的樣式,所以:
上圖中li的父元素(即ul)下的第2個子元素是div,所以不採用樣式
上圖中第一個採用樣式的li元素是其父元素(即ul)下、與li同類型的、第2個直接子元素(但這個元素是ul下第3個直接子元素)

nth-child與nth-of-type的二種用法

       上述兩例已經是nth-child與nth-of-type的最常見用法了,下面我們採用表格對比看看它們的2種用法:

A(空格):nth-child/nth-of-type(n)用法

型別 A(空格):nth-of-type A(空格):nth-child
用法 ul :nth-of-type(2n){background: red;} ul :nth-child(2n){color: blue;}
含義 所有元素 是其父元素ul下的、同類型的、第2n個直接子元素 所有元素 是其父元素ul下的第2n個直接子元素
頁面效果 這裡寫圖片描述 這裡寫圖片描述
定義 A(空格):nth-of-type表示A元素下每一型別子元素中,第2n個元素的樣式 A(空格):nth-child表示A元素下的第2n個子元素的樣式

A:nth-child/nth-of-type(n)用法

型別 A:nth-of-type A:nth-child
用法 li:nth-of-type(2n){background: red;} li:nth-child(2n){color: blue;}
含義 當li是其父元素下的同類型子元素中的第2n個時的樣式 當li是其父元素下的第2n個子元素時的樣式
頁面效果 這裡寫圖片描述 這裡寫圖片描述
定義 A:nth-of-type表示當A元素是其父元素下的同類型元素中的第2n個時的樣式 A:nth-child表示當A元素是其父元素下的第2n個子元素時的樣式

Jquery中的用法

       非常幸運的是,在jquery中:nth-child和:nth-of-type的用法與上述完全相同,在此,只列舉其在jquery中的用法如下:

 $("ul li:nth-child(2)").hide();
 $("p:nth-of-type(3)").css("background-color","yellow");

總結

1、:nth-child與:nth-of-type選中的元素都是緊挨冒號前的元素

2、nth-child與nth-of-type的2種用法

型別 A:nth-of-type A:nth-child
用法 li:nth-of-type(2n){background: red;} li:nth-child(2n){color: blue;}
含義 選擇li元素的父元素下的、與li同類型元素中的、第n個直接子元素、並且該元素也為li元素 選擇li元素的父元素下的、第n個直接子元素、、並且該元素也為li元素
型別 A(空格):nth-of-type A(空格):nth-child
用法 ul :nth-of-type(2n){background: red;} ul :nth-child(2n){color: blue;}
含義 選擇ul下的所有元素、這些元素是其父元素ul下的、同類型中的、第2n個直接子元素 選擇ul下的所有元素、這些元素是其父元素ul下的第2n個直接子元素