CSS 子元素选择器(first-child/last-child/nth-child/nth-last-child)
虽然从事前端这么久了,但是也一直没怎么写过关于 CSS 的文章,今天我们就聊聊 CSS 子元素选择器。
开始之前,我们先创建一个初始化场景页面,以下是我们的示例开始的代码:
<script setup lang="ts">
const items = new Array(15).fill(0).map((_, idx) => idx)
</script>
<template>
<div class="list-container">
<div class="list-item" v-for="item in items" :key="item">{{ item + 1 }}</div>
</div>
</template>
<style>
.list-container {
width: 100%;
display: flex;
flex-wrap: wrap;
background-color: #E6E6FA;
}
.list-item {
width: calc(20% - 24px);
height: 44px;
margin: 10px 0 10px 20px;
font-size: 14px;
color: white;
background-color: #D3D3D3;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
}
</style>
初始效果如下图所示:
注意:CSS 的索引是从
1
开始的
first-child
:first-child
表示选择列表中的第一个元素,比如我们需要将列表中第一个 .list-item
背景改为红色,文字颜色改为黑色,则代码如下:
.list-item:first-child {
background-color: red;
color: black;
}
last-child
:last-child
表示选择列表中的最后一个元素,比如我们需要将列表中最后一个 .list-item
背景改为绿色,文字改为红色,则代码如下:
.list-item:last-child {
background-color: green;
color: red;
}
nth-child()
1、括号内填写具体数字,表示选择列表中第 N 个
比如我想要列表第三个元素的字体大小为28px、粗体,背景为红色,则代码如下:
.list-item:nth-child(3) {
background-color: red;
font-size: 28px;
font-weight: bold;
}
如果我们填写了 1,不就代表选择列表中的第一个元素了吗,所以
:nth-child(1)
等价于:first-child
2、nth-child(2n)
2n
表示选择列表中的偶数元素,即选择第 2、4、6、8、10… 个元素,比如我们需要给偶数列添加一个蓝色边框,代码如下:
.list-item:nth-child(2n) {
border: 4px solid #1E90FF;
}
3、nth-child(2n-1)
2n-1
表示选择列表中的奇数元素,即选择第 1、3、5、7、9… 个元素,比如我们需要给偶数列添加一个紫色背景,代码如下:
.list-item:nth-child(2n-1) {
background-color: #8B008B;
}
4、nth-child(n+4)
n+4
表示选择列表中元素从第 4 个开始到最后一个(包含开始索引位置,即 ≥4
)
.list-item:nth-child(n+4) {
background-color: red;
}
5、nth-child(-n+4)
-n+4
表示选择列表中的从第 1 个到第 4 个,即选中前 4 个元素(包含结束的索引位置,即 ≤4
),根据实际情况你需要选择前几个就把数字改成几即可。
.list-item:nth-child(-n+4) {
background-color: red;
}
nth-last-child()
1、括号内填写具体数字,表示选择列表中倒数第 N 个
比如我想将列表中倒数第 2 个的背景色改成红色,则代码如下:
.list-item:nth-last-child(2) {
background-color: red;
}
如果我们填写了 1,不就代表选择列表中的最后一个元素了吗,所以
:nth-last-child(1)
等价于:last-child
2、2n/2n-1 奇偶数元素
nth-last-child(2n)
等价于 nth-child(2n)
,nth-last-child(2n-1)
等价于 nth-child(2n-1)
。
3、nth-last-child(n+4)
n+4
表示选择列表中顺数第 1 个到倒数第 4 个(含)元素
.list-item:nth-last-child(n+4) {
background-color: red;
}
4、nth-last-child(-n+4)
-n+4
表示选择列表中的从倒数第 1 个到倒数第 4 个,即选中最后 4 个元素,根据实际情况你需要选择最后几个就把数字改成几即可。
.list-item:nth-last-child(-n+4) {
background-color: red;
}