- Objective:
- Breadcrumb:
# 概念阐释
## 语义
通过CSS伪类来控制当前所有**兄弟元素**,要比单独定义class或id更方便。
## 语法
`:nth-child(an+b)`,括号中表达式(an+b)匹配到的元素集合(n=0,1,2,3...)
- `0n+3` 或简单的 `3` 匹配第三个元素。(从n=0开始,0+3=3)
- `1n+0` **或简单的 `n`** 匹配每个元素。(从n=0开始,0x0=0不存在,n=1,2,3...)
- `2n+0` **或简单的 `2n`** 匹配位置为 2、4、6、8...的元素,或者`tr:nth-child(even)`(从n=0开始,2x0=0不存在,2,4,6,8...)
- `2n+1` 匹配位置为 1、3、5、7...的元素,或者`tr:nth-child(odd)`(2+1,4+1,6+1...)
# 实例
### 实例1
- 转换表格的单行或双行样式
### 实例2
```html
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
```
```css
/*block盒子样式*/
.block {
border: 20px solid #7C4723;
border-radius: 5px;
box-shadow:
0 0 0 2px hsl(0, 0%, 80%);
color: white;
font-size: 30px;
font-weight: bold;
line-height: 50px;
margin-top: 4px;
margin-bottom: 4px;
padding: 15%;
position: relative;
text-align: center;
width: 90px;
}
/*如果有10个盒子,每个盒子的单独样式,1n匹配后续的1,5,7,不写n只会匹配第一个盒子*/
.block:nth-child(1n){
background-color: #fa4359;
margin-left: 70px;
}
/*如果有10个盒子,每个盒子的单独样式,2n匹配2,4,8,10*/
.block:nth-child(2n){
background-color: #4b35ef;
margin-left: 25px;
}
/*如果有10个盒子,每个盒子的单独样式,3n匹配3,6,9*/
.block:nth-child(3n){
background-color: #37c3be;
margin-left: -15px;
}
```
# 相关内容
# 参考资料
- [CSS 伪类](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-classes)
- [:nth-child MDN](https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-child)
- [[js 库 Handlebars "Each" and "This"]]练习题