CSS的复合选择器

CSS选择器是前端开发中非常重要的基础知识,而复合选择器则是其中功能强大且实用的部分。本文将详细介绍各种复合选择器的用法和应用场景,帮助您更高效地选择和控制页面元素。

1. 后代选择器(空格)

后代选择器通过空格连接两个选择器,用于选择嵌套在父元素内部的所有匹配子元素,不论嵌套层级有多深。

语法:祖先选择器 后代选择器{}

代码示例:

css 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>复合选择器</title>
    <style>
        .container .box1-1 {
            width: 100px;
            height: 100px;
            background-color: #19ff32;
            color: #5440ff;
        }
    </style>
</head>
<body>
    <div class="container">
        <!--作为container的亲儿子-->
        <div class="box1-1">我是儿子</div>
        <div class="box1">
            <!--做为container的孙子-->
            <div class="box1-1">
                我是孙子
                <div class="box1-1">
                    <!--做为container的孙孙-->
                    我是孙孙子
                </div>
            </div>
        </div>
    </div>
</body>
</html>

运行结果:


注意点:

  1. 后代包括:⼉⼦、孙⼦、重孙⼦......
  2. 后代选择器中,选择器与选择器之前通过 空格 隔开

2. 子代选择器(>)

子代选择器使用>符号,只选择直接子元素,不会选择更深层级的元素。

语法:子代选择器:亲父亲选择器>亲儿子选择器{}

css 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子代选择器</title>
  <style>
    .container>.box1{
      width: 100px;
      height: 100px;
      background-color: #19ff32;
    }
  </style>
</head>
<body>
    <div class="container">
        <!--作为container的亲儿子-->
        <div class="box1">我是儿子</div>
        <div class="box1-1">
            <!--做为container的孙子-->
            <div class="box1">
                我是孙子
                <div class="box1">
                    <!--做为container的孙孙-->
                    我是孙孙子
                </div>
            </div>
        </div>
    </div>
</body>
</html>


注意点:

  1. ⼦代只包括:⼉⼦
  2. ⼦代选择器中,选择器与选择器之前通过 > 隔开

3. 并集选择器(,)

并集选择器可以同时选择多个元素,为它们设置相同的样式。

语法:并集选择器:选择器1,选择器2....{}

css 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>并集选择器</title>
    <style>
        h1,div p, .outer{
            width:100px;
            height:100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <h1>我是大标题</h1>
    <h2>我是小标题</h2>
    <p class="outer">我是盒子外部的段落!!!</p>
    <div>
         <p class="inner">
             我是盒子内部的段落!!!
         </p>
    </div>
</body>
</html>


注意点:

  1. 并集选择器中的每组选择器之间通过 , 分隔
  2. 并集选择器中的每组选择器可以是基础选择器或者复合选择器
  3. 并集选择器中的每组选择器通常⼀⾏写⼀个,提⾼代码的可读性

4.交集选择器

交集选择器可以通过对元素的类名和id名以及标签名字,对元素进行精准定位,为它们设置样式。

语法:交集选择器:标签名称.选择器名称{}

css 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>交集选择器</title>
    <style>
     /*给类名为boxid名为one的元素设置属性*/
     .box#one {
          width: 100px;
          height: 100px;
          background-color: red;
      }
     /*给标签为h2id名为three的元素设置属性*/
     h2#three{
          width: 100px;
          height: 100px;
          background-color: blueviolet;
     }
    </style>
</head>
<body>
    <div class="box">
        <div class="box" id="one">111</div>
         <h2 class="box" id="two">222</h2>
         <h2 class="box" id="three">222</h2>
         <p class="box" id="four">333</p>
    </div>
</body>
</html>

运行结果:

5.伪类结构选择器:hover{}

伪类结构主要是用来制作鼠标悬停的时候的动态效果。

语法:伪类选择器:hover{}

css 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>伪类结构选择器</title>
    <style>
        h1:hover{
            color: red;
        }
        .outer:hover{
            background-color: #ef96c2;
        }
        a:hover{
            color: #0be4d5;
        }
    </style>
</head>
<body>
    <h1>我是大标题</h1>
    <p class="outer">伪类结构主要是用来制作鼠标悬停的时候的动态效果。</p>
    <div>
        <a href="http://www.baidu.com">百度一下</a>
    </div>
</body>
</html>

运行结果:

总结:

复合选择器是CSS中非常强大的工具,合理使用可以:

  1. 减少HTML中的类名依赖,保持代码整洁
  2. 提高样式选择效率,减少重复代码
  3. 实现更复杂的样式控制
  4. 创建丰富的交互效果
相关推荐
鬼手点金7 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
软件技术NINI7 小时前
美妆商城html+Css+js 4页
javascript·css·html
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday7 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室8 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan8 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床8 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a10 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉