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. 创建丰富的交互效果
相关推荐
疯狂的沙粒5 分钟前
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
前端·uni-app·html
小妖6669 分钟前
html 滚动条滚动过快会留下边框线
前端·html
heroboyluck23 分钟前
Svelte 核心语法详解:Vue/React 开发者如何快速上手?
前端·svelte
海的诗篇_25 分钟前
前端开发面试题总结-JavaScript篇(二)
开发语言·前端·javascript·typescript
琹箐35 分钟前
ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示
前端·javascript·anti-design-vue
程序员-小李36 分钟前
VuePress完美整合Toast消息提示
前端·javascript·vue.js
Uyker1 小时前
从零开始制作小程序简单概述
前端·微信小程序·小程序
EndingCoder6 小时前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架
阿阳微客7 小时前
Steam 搬砖项目深度拆解:从抵触到真香的转型之路
前端·笔记·学习·游戏
德育处主任Pro7 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js