- CSS 教程
- CSS - 首页
- CSS - 路线图
- CSS - 简介
- CSS - 语法
- CSS - 选择器
- CSS - 包含
- CSS - 测量单位
- CSS - 颜色
- CSS - 背景
- CSS - 字体
- CSS - 文本
- CSS - 图片
- CSS - 链接
- CSS - 表格
- CSS - 边框
- CSS - 块级边框
- CSS - 内联边框
- CSS - 外边距
- CSS - 列表
- CSS - 内边距
- CSS - 光标
- CSS - 轮廓
- CSS - 尺寸
- CSS - 滚动条
- CSS - 行内块
- CSS - 下拉菜单
- CSS - 可见性
- CSS - 溢出
- CSS - 清除浮动
- CSS - 浮动
- CSS - 箭头
- CSS - 调整大小
- CSS - 引号
- CSS - 顺序
- CSS - 定位
- CSS - 连字符
- CSS - 悬停
- CSS - 显示
- CSS - 聚焦
- CSS - 缩放
- CSS - 位移
- CSS - 高度
- CSS - 连字符字符
- CSS - 宽度
- CSS - 不透明度
- CSS - Z-index
- CSS - 底部
- CSS - 导航栏
- CSS - 叠加层
- CSS - 表单
- CSS - 对齐
- CSS - 图标
- CSS - 图片库
- CSS - 注释
- CSS - 加载器
- CSS - 属性选择器
- CSS 选择器组合
- CSS - 根元素
- CSS - 盒模型
- CSS - 计数器
- CSS - 剪裁
- CSS - 书写模式
- CSS - Unicode-bidi
- CSS - min-content
- CSS - all
- CSS - inset
- CSS - isolation
- CSS - overscroll
- CSS - justify-items
- CSS - justify-self
- CSS - tab-size
- CSS - pointer-events
- CSS - place-content
- CSS - place-items
- CSS - place-self
- CSS - max-block-size
- CSS - min-block-size
- CSS - mix-blend-mode
- CSS - max-inline-size
- CSS - min-inline-size
- CSS - offset
- CSS - accent-color
- CSS - user-select
- CSS 高级
- CSS - 网格
- CSS - 网格布局
- CSS - Flexbox
- CSS - 可见性
- CSS - 定位
- CSS - 层
- CSS - 伪类
- CSS - 伪元素
- CSS - @规则
- CSS - 文字特效
- CSS - 分页媒体
- CSS - 打印
- CSS - 布局
- CSS - 验证
- CSS - 图片精灵
- CSS - !important
- CSS - 数据类型
- CSS3 教程
- CSS3 - 教程
- CSS - 圆角
- CSS - 边框图片
- CSS - 多背景
- CSS - 颜色
- CSS - 渐变
- CSS - 盒阴影
- CSS - box-decoration-break
- CSS - caret-color
- CSS - 文本阴影
- CSS - 文本
- CSS - 2D 变换
- CSS - 3D 变换
- CSS - 过渡
- CSS - 动画
- CSS - 多列
- CSS - 盒尺寸
- CSS - 工具提示
- CSS - 按钮
- CSS - 分页
- CSS - 变量
- CSS - 媒体查询
- CSS - 函数
- CSS - 数学函数
- CSS - 遮罩
- CSS - 形状
- CSS - 样式图片
- CSS - 特效性
- CSS - 自定义属性
- CSS 响应式
- CSS 响应式 - 简介
- CSS 响应式 - 视口
- CSS 响应式 - 网格视图
- CSS 响应式 - 媒体查询
- CSS 响应式 - 图片
- CSS 响应式 - 视频
- CSS 响应式 - 框架
- CSS 工具
- CSS - PX到EM转换器
- CSS - 颜色选择器和动画
- CSS 资源
- CSS - 有用资源
- CSS - 讨论
CSS 选择器组合
CSS 选择器组合用于指定选择器之间的特定关系,以便可以根据 HTML 结构中元素之间的关系进行样式设置。换句话说,组合器可以帮助您根据元素在 HTML 文档中的位置和层次结构来定位元素。
例如,使用组合器,您可以设置紧跟在 div 元素后面的段落元素的样式。
目录
组合器的类型
CSS 主要有四种组合器类型
- 后代组合器 (空格)
- 子元素组合器 (>)
- 相邻兄弟组合器 (+)
- 通用兄弟组合器 (~)
现在,我们将查看每种组合器的示例用法,在此之前,请确保您已经熟悉CSS 选择器。
CSS 后代组合器
后代组合器用于选择嵌套在另一个元素内的元素,无论嵌套深度如何。它们通常用单个空格 (" ") 表示。
例如,您可以像这样定位 <div> 内的所有 <p> 元素
div p { /* CSS styles for all p elements inside div */ }
同样,我们可以组合任何选择器,例如类、ID 等。在下面的示例中,我们将元素选择器与类选择器组合。
示例
<!DOCTYPE html> <html> <head> <style> .parent { background-color: lightblue; padding: 20px; } .parent p { color: red; font-weight: bold; } </style> </head> <body> <div class="parent"> <h3> This is h3 tag inside parent element </h3> <p> This is a p tag inside parent element. </p> <p> This is a p tag inside parent element. </p> </div> <div> <p> This is a p tag outside parent element. </p> </div> </body> </html>
CSS 子元素组合器
子元素组合器 (>) 用于选择指定元素的直接子元素。它不会选择嵌套在子元素内的元素。
例如,您可以像这样定位 <div> 内的所有直接 <p> 子元素
div > p { /* CSS styles for all direct p children inside div */ }
同样,我们可以组合任何选择器,例如类、ID 等。在下面的示例中,我们为类 parent 内的所有 p 标签设置样式。
示例
<!DOCTYPE html> <html> <head> <style> .parent { background-color: lightgreen; padding: 20px; } .parent > p { color: blue; font-weight: bold; } </style> </head> <body> <div class="parent"> <h3> This is an h3 tag inside parent. </h3> <p> This is a direct p tag inside parent. </p> <p> This is another direct p tag inside parent. </p> <div> <p> This is a p tag nested inside a div in parent element. </p> </div> </div> <div> <p> This is a p tag outside parent element. </p> </div> </body> </html>
CSS 相邻兄弟组合器
相邻兄弟组合器 (+) 用于选择紧跟在指定元素之前的元素。它只影响紧跟在指定元素后面的元素。
例如,您可以像这样定位紧跟在 <h3> 元素后面的 <p> 元素
h3 + p { /* CSS styles for the p element immediately following an h3 */ }
在下面的示例中,我们定位紧跟在 <h3> 元素后面的 <p> 元素。
示例
<!DOCTYPE html> <html> <head> <style> .container { padding: 20px; background-color: lightyellow; } h3 + p { color: purple; font-style: italic; } </style> </head> <body> <div class="container"> <h3>This is an h3 tag</h3> <p> This is a p tag that immediately follows the h3 tag. </p> <p> This is another p tag, but it is not immediately after the h3 tag. </p> </div> </body> </html>
CSS 通用兄弟组合器
通用兄弟组合器 (~) 用于选择所有作为指定元素的兄弟元素,并且在 HTML 结构中出现在其后面的元素。它将选择所有匹配的兄弟元素,而不仅仅是紧跟在后面的一个。
例如,您可以像这样定位所有跟在 <h3> 元素后面的 <p> 元素
h3 ~ p { /* CSS styles for all p elements following an h3 element */ }
在下面的示例中,我们定位所有作为 <h3> 元素的兄弟元素,并且出现在其后面的 <p> 元素。
示例
<!DOCTYPE html> <html> <head> <style> .container { padding: 20px; background-color: #f0f0f0; } h3 ~ p { color: darkorange; text-decoration: underline; } </style> </head> <body> <div class="container"> <p> This is a p tag before h3 tag </p> <h3> This is an h3 tag </h3> <p> This is a p tag that follows the h3 tag. </p> <p> This is another p tag that also follows the h3 tag. </p> <div> This is a div tag. </div> <p> This is a p tag after div tag </p> </div> <p> This is a p tag after h3 tag outside container. </p> </body> </html>
组合多个组合器
在 CSS 中,您可以组合多个组合器以创建更复杂和更具体的选择器。通过组合不同的组合器,您可以根据 HTML 结构中更复杂的关系来定位元素。
例如,您可以像这样定位作为 <div> 的直接子元素并且紧跟在 <h3> 元素后面的 <p> 元素
div > h3 + p { /* CSS styles for p elements that are direct children of a div and immediately follow an h3 element */ }
在下面的示例中,我们将子元素组合器与相邻兄弟组合器组合以定位导航菜单内的锚元素。
示例
<!DOCTYPE html> <html> <head> <style> nav { padding: 10px; background-color: #f0f0f0; } ul { list-style-type: none; padding: 0; } ul > li { display: inline-block; margin-right: 15px; } ul > li + a { color: red; text-decoration: underline; } ul > li > a { color: blue; text-decoration: none; } </style> </head> <body> <nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Services</a></li> <a href="#">Contact</a> </ul> </nav> </body> </html>