CSS E:nth-child(n)

admin發表於2018-11-28

E:nth-child(n)是偽類選擇器,可以匹配指定型別與位置的元素。

被匹配元素具有如下特點:

(1).首先,是E型別元素。

(2).其次,必須是父元素的第n個子元素。

特別說明:E並不僅表示元素選擇器,也可以是其他CSS選擇器。

語法結構:

[CSS] 純文字檢視 複製程式碼
E:nth-child(n){ Rules }

引數解析:

(1).E:CSS選擇器。

(2).Rules:CSS具體規則宣告。

此選擇器具有三種型別引數:

(1).數字。

(2).關鍵字。

(3).表示式。

後面會通過程式碼例項詳細演示各種型別引數的使用方式。

瀏覽器支援:

(1).IE9+瀏覽器支援此選擇器。

(2).edge瀏覽器支援此選擇器。

(3).谷歌瀏覽器支援此選擇器。

(4).火狐瀏覽器支援此選擇器。

(5).opera瀏覽器支援此選擇器。

(6).safria瀏覽器支援此選擇器。

例項程式碼:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
li:nth-child(2){
  color:blue;
}
</style>
</head>
<body>
  <ul>
    <li>螞蟻部落一</li>
    <li>螞蟻部落二</li>
    <li>螞蟻部落三</li>
    <li>螞蟻部落四</li>
  </ul>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/28/124332fvw99b9bjt9zdwuu.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼分析如下:

(1).E是元素選擇器li,匹配到ul下所有li元素。

(2).然後在li元素集合中查詢第二個li元素,然後將其字型顏色設定為藍色。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
li:nth-child(3){
  color:blue;
}
</style>
</head>
<body>
  <ul>
    <li>螞蟻部落一</li>
    <li>螞蟻部落二</li>
    <p>螞蟻部落三</p>
    <li>螞蟻部落四</li>
  </ul>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/28/124358fc0mgp48wfr5lc8w.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

沒有任何文字被設定為藍色,可見匹配失敗,分析如下:

(1).首先,被匹配元素必須是li元素。

(2).其次,被匹配元素必須父元素下第三個子元素,然而第三個是p元素,匹配失敗。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
span{display:block}
span:nth-child(2){color:blue;}
</style>
</head>
<body>
  <div id="box">
    <span>螞蟻部落一</span>
    <span>螞蟻部落二</span>
    <div id="ant">
      <span>螞蟻部落三</span>
      <div id="inner">
        <span>螞蟻部落四</span>
      </div>
    </div>
  </div>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/28/124430iwl0nwh7hql8xgnv.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼可以將第二個span元素字型顏色設定為藍色。

程式碼分析如下:

(1).box具有三個子元素,分別是兩個span和ant,第二個span匹配成功,將其字型顏色設定為藍色。

(2).ant具有兩個子元素,分別是span和inner,此span並不是第二個子元素,匹配失敗。

(3).inner具有一個span子元素,自然匹配失敗。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
li:nth-child(odd){
  color:blue;
}
</style>
</head>
<body>
  <ul>
    <li>螞蟻部落一</li>
    <li>螞蟻部落二</li>
    <p>螞蟻部落三</p>
    <li>螞蟻部落四</li>
 </ul>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/28/124454xjjp0v87l3hjjjd3.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

選擇器的引數還可以是關鍵字:

(1).odd匹配奇數行指定型別元素。

(2).even匹配偶數行指定型別元素。

CSS與其他程式語言不同,位置是從1開始計數的,而不是0。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
li:nth-child(2n + 1){
  color:blue;
}
</style>
</head>
<body>
  <ul>
    <li>螞蟻部落一</li>
    <li>螞蟻部落二</li>
    <li>螞蟻部落三</li>
    <li>螞蟻部落四</li>
    <li>螞蟻部落五</li>
    <li>螞蟻部落六</li>
    <li>螞蟻部落七</li>
    <li>螞蟻部落八</li>
 </ul>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/28/124524p8c98zoccjfzbzzj.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼中,選擇器引數是一個表示式,下面介紹一下規則。

語法結構描述如下:

[CSS] 純文字檢視 複製程式碼
E:nth-child(an+b)

解析如下:

(1).a表示每次計數跨越兄弟元素的基礎個數。

(2).n表示跨越的次數,從開始計數進行自增。

(3).b表示跨域的偏移量。下面分析一下li:nth-child(2n + 1)選擇器是如何運作的:

規定每次跨越兄弟元素基礎個數是2,偏移量為1:

(1).2*0+1=1

(2).2*1+1=3

(3).2*2+1=5

以此類推,於是第一、第三、第五和第七的li元素字型顏色設定為藍色。