©
This document uses PHP Chinese website manual Release
语法:
E:nth-child(n) { sRules }
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素
该选择符允许使用一个乘法因子(n)来作为换算方式,比如我们想选中所有的偶数子元素E,那么选择符可以写成:E:nth-child(2n)
使用E:nth-child(n)实现奇偶:
示例代码:
<style> li:nth-child(2n){color:#f00;} /* 偶数 */ li:nth-child(2n+1){color:#000;} /* 奇数 */ </style> <ul> <li>列表项一</li> <li>列表项二</li> <li>列表项三</li> <li>列表项四</li> </ul>
因为(n)代表一个乘法因子,可以是0, 1, 2, 3, ..., 所以(2n)换算出来会是偶数,而(2n+1)换算出来会是奇数
列表项一
列表项二
列表项三
列表项四
该选择符允许使用一些关键字,比如:odd, even
使用odd, even实现奇偶:
<style> li:nth-child(even){color:#f00;} /* 偶数 */ li:nth-child(odd){color:#000;} /* 奇数 */ </style> <ul> <li>列表项一</li> <li>列表项二</li> <li>列表项三</li> <li>列表项四</li> </ul>
关键字odd代表奇数,even代表偶数
列表项一
列表项二
列表项三
列表项四
有一点需要注意的是:
HTML示例代码:
<div> <p>第1个p</p> <p>第2个p</p> <span>第1个span</span> <p>第3个p</p> <span>第2个span</span> <p>第4个p</p> <p>第5个p</p> </div>
CSS Case 1:
p:nth-child(2){color:#f00;}
很明显第2个p会被命中然后变成红色
CSS Case 2:
p:nth-child(3){color:#f00;}
这是会命中第3个p么?如果你这么认为那就错了,这条选择符就不会命中任何一个元素。
CSS Case 3:
p:nth-child(4){color:#f00;}
这时你以为会命中第4个p,但其实命中的却是第3个p,因为它是第4个子元素
E:nth-child(n)会选择父元素的第n个子元素E,如果第n个子元素不是E,则是无效选择符,但n会递增。
假设不确定第1个子元素是否为E,但是又想命中第1个E,应该这样写:
p:first-of-type{color:#f00;}
或者这样写:
p:nth-of-type(1){color:#f00;}
参考 E:first-of-type 和 E:nth-of-type(n)
IE | Firefox | Chrome | Safari | Opera | iOS Safari | Android Browser | Android Chrome |
---|---|---|---|---|---|---|---|
6.0-8.0 | 2.0+ | 4.0+ | 3.1+ | 3.5+ | 3.2+ | 2.1+ | 18.0+ |
IE9.0+ |
<!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8" /> <title>结构性伪类选择符 E:nth-child(n)_CSS参考手册_web前端开发参考手册系列</title> <meta name="author" content="Joy Du(飘零雾雨), dooyoe@gmail.com, www.doyoe.com" /> <style> h1 { font-size: 16px; } li:nth-child(2) { color: #f00; } </style> </head> <body> <h1>第二行要变成红色 <code>li:nth-child(2){color:#f00;}</code></h1> <ul> <li>结构性伪类选择符 E:nth-child(n)</li> <li>结构性伪类选择符 E:nth-child(n)</li> <li>结构性伪类选择符 E:nth-child(n)</li> </ul> </body> </html>
点击 "运行实例" 按钮查看在线实例