nth-child() 選擇器用法詳解

antzone發表於2017-04-05

關於此選擇器的基本用法可以參閱CSS E:nth-child(n)一章節。

先看它的語法結構:

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

下面介紹一下此選擇器的作用:

(1).選擇器首先匹配父元素的第n個元素。

(2).然後再根據E選擇器進行篩選。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box li {
  width: 350px;
  height: 25px;
  line-height: 25px;
  font-size: 12px;
}
li:nth-child(3) {
  color:green;
}
</style>
</head>
<body>
<ul id="box">
  <li>螞蟻部落歡迎您,只有努力才會有美好的未來</li>
  <li>每一天都是新的,必須要好好把握。</li>
  <li>沒有人一開始就是高手,必須要努力奮鬥。</li>
  <li>未來都是虛無縹緲的,只有當前是現實。</li>
  <li>分享和互助式進步的最大原動力</li>
  <li>本站的url地址是www.softwhy.com。</li>
</ul>
</body>
</html>

上面的程式碼可以將ul元素下第3個子元素li的字型顏色設定為綠色。

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box li {
  width: 350px;
  height: 25px;
  line-height: 25px;
  font-size: 12px;
}
.antzone:nth-child(2) {
  color:green;
}
.antzone:nth-child(3) {
  color:green;
}
</style>
</head>
<body>
<ul id="box">
  <li>螞蟻部落歡迎您,只有努力才會有美好的未來</li>
  <li class="antzone">每一天都是新的,必須要好好把握。</li>
  <li>沒有人一開始就是高手,必須要努力奮鬥。</li>
  <li class="antzone">未來都是虛無縹緲的,只有當前是現實。</li>
  <li>分享和互助式進步的最大原動力</li>
  <li class="antzone">本站的url地址是www.softwhy.com。</li>
</ul>
</body>
</html>

上面的程式碼可以將ul元素下第二個li元素的字型顏色設定為綠色,但是這個li元素的class屬性值必須是antzone。

由於第三個li元素的class屬性值非antzone,所以字型顏色不是綠色。

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

上面的程式碼可以將body子元素的第二個元素字型顏色設定為綠色(如果是p元素的話)。

奇偶匹配:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box li {
  width: 350px;
  height: 25px;
  line-height: 25px;
  font-size: 12px;
}
li:nth-child(odd) {
  color:green;
}
</style>
</head>
<body>
<ul id="box">
  <li>螞蟻部落歡迎您,只有努力才會有美好的未來</li>
  <li>每一天都是新的,必須要好好把握。</li>
  <li>沒有人一開始就是高手,必須要努力奮鬥。</li>
  <li>未來都是虛無縹緲的,只有當前是現實。</li>
  <li>分享和互助式進步的最大原動力</li>
  <li>本站的url地址是www.softwhy.com。</li>
</ul>
</body>
</html>

上面的程式碼可以將li元素奇數行字型顏色設定為綠色。

當然:nth-child()選擇器的引數可以是even,即:nth-child(even)。

倍數寫法:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box li {
  width: 350px;
  height: 25px;
  line-height: 25px;
  font-size: 12px;
}
li:nth-child(3n) {
  color:green;
}
</style>
</head>
<body>
<ul id="box">
  <li>螞蟻部落歡迎您,只有努力才會有美好的未來</li>
  <li>每一天都是新的,必須要好好把握。</li>
  <li>沒有人一開始就是高手,必須要努力奮鬥。</li>
  <li>未來都是虛無縹緲的,只有當前是現實。</li>
  <li>分享和互助式進步的最大原動力</li>
  <li>本站的url地址是www.softwhy.com。</li>
</ul>
</body>
</html>

上面的程式碼可以將第三個和第六個li元素字型顏色設定為綠色。

這個n可以是1,2,3....。

當然括號中的這個規則可以延伸為:nth-child(2n+1),:nth-child(2n-3),:nth-child(4n+3)等等,可以無限擴充套件。

相關文章