css选择器继承性
### 🎯 1. 后代选择器(`E F`)
**通俗解释:**
> “在 **E 家族** 里的所有叫 **F** 的后人,不管是儿子、孙子、曾孙,只要在这家里,都算!”
**特点:** 不分辈分,不隔代亲,只要是“家族成员”就行。
**语法:** `E F`(中间是**空格**)
**HTML 实例:**
```html
<style>
/* 找 div 家族里所有的 span 后代 */
div span {
color: blue;
}
</style>
<div>
<p>普通段落</p>
<!-- 儿子级 span -->
<span>我是儿子 span</span>
<section>
<!-- 孙子级 span -->
<span>我是孙子 span</span>
<article>
<!-- 曾孙级 span -->
<span>我是曾孙 span</span>
</article>
</section>
</div>
<!-- 外面的 span,不属于 div 家族 -->
<span>我在外面,不变色</span>
```
✅ **结果:** 前三个 `<span>` 都变蓝色,最后一个不变。
---
### 👨👦 2. 子代选择器(`E > F`)
**通俗解释:**
> “只认 **亲儿子**!必须是 E 的‘亲生’孩子 F,孙子、外孙都不算!”
**特点:** 必须是**直接下一级**,中间不能隔人。
**语法:** `E > F`(中间是 `>`)
**HTML 实例:**
```html
<style>
/* 只找 div 的亲儿子 span */
div > span {
color: green;
}
</style>
<div>
<!-- 亲儿子 span ✅ -->
<span>我是儿子,我会变绿</span>
<section>
<!-- 孙子 span ❌(中间隔了 section) -->
<span>我是孙子,我不会变绿</span>
</section>
</div>
```
✅ **结果:** 只有“我是儿子...”这行变绿色,孙子那行不变。
---
### ➕ 3. 相邻兄弟选择器(`E + F`)
**通俗解释:**
> “找 **紧跟在 E 后面** 的那个 **亲兄弟 F**,而且必须是‘紧挨着’的!”
**特点:** 必须是**同级**、**相邻**、**下一个**。
**语法:** `E + F`
**HTML 实例:**
```html
<style>
/* 找紧跟在 p 后面的那个 span */
p + span {
font-weight: bold;
}
</style>
<p>前面的段落</p>
<!-- 紧挨着的 span ✅ -->
<span>我是紧跟在 p 后面的 span,我会加粗</span>
<span>我前面不是 p,我不加粗</span>
<div>div</div>
<span>我前面是 div,不加粗</span>
```
✅ **结果:** 只有第一个 `<span>` 加粗,其他不变。
---
### ↔️ 4. 通用兄弟选择器(`E ~ F`)
**通俗解释:**
> “只要是和 E **同一个爸爸** 的 **弟弟们**(后面的兄弟 F),不管隔了几个兄弟,都算!”
**特点:** 同级、在 E **之后**,但**不一定紧挨着**。
**语法:** `E ~ F`
**HTML 实例:**
```html
<style>
/* 找所有在 p 之后的同级 span 兄弟 */
p ~ span {
text-decoration: underline;
}
</style>
<p>这是 p 标签</p>
<span>我是在 p 之后的 span,我会被下划线</span>
<span>我也是 p 之后的 span,我也被下划线</span>
<div>中间有个 div</div>
<span>我前面有 div,但仍在 p 之后,我也被下划线 ✅</span>
<span>我也是 ✅</span>
<span>我在 p 前面,我不受影响</span>
<p>另一个 p</p>
```
✅ **结果:** 所有在第一个 `<p>` **之后**的 `<span>` 都有下划线,不管中间有没有 `<div>`。
---
### 📚 总结对比:
| 选择器 | 语法 | 通俗含义 | 关键词 |
|-------|------|----------|--------|
| 后代选择器 | `E F` | 家族里所有叫 F 的后人 | **空格**,不限层级 |
| 子代选择器 | `E > F` | 只认亲儿子 F | `>`,直接下一级 |
| 相邻兄弟 | `E + F` | 紧跟在 E 后面的那个 F 兄弟 | `+`,**紧挨着** |
| 通用兄弟 | `E ~ F` | E 之后的所有 F 兄弟 | `~`,同级,**之后即可** |
记住这些生活化的比喻,CSS 选择器就再也不难啦!