CSS详细基础(三)复合选择器

news2024/11/24 8:58:04

前两章介绍了CSS中的基础属性,以及一些基础的选择器,本贴开始介绍复合选择器的内容~


​ 在 CSS 中,可以根据选择器的类型把选择器分为基础选择器复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。 ​ 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,可以更准确、更高效的选择目标元素(标签) ​ 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等~

目录

一.后代选择器

二.并集选择器

三.伪类选择器


一.后代选择器

所谓后代选择器,顾名思义——来源自某个“祖先”;在CSS中,允许将父标签中的子标签单独选中赋予样式,这就用到了后代选择器~

现给出结构文件如下:

<body>
    <ol>
        我是犯规写法。<br>
        有序列表中必须有li,否则该文本不属于ol之中。
        <li>我是ol的子类,我是红色</li>
        <li>我是ol的子类,我是红色</li>
        <li>我是ol的子类,我是红色</li>
        <li><a href="#">我是ol中li的子类,我是蓝色</a></li>
        <!-- 此处的子类为a标签 -->
        <!-- 实现了三级连跳,选择的其实是li的子标签a -->
    </ol>
    <ul>
        <li>我是ul中li的子类,我是橙色</li>
        <li>我是ul中li的子类,我是橙色</li>
        <li>我是ul中li的子类,我是橙色</li>
        <li><a href="#">我是ul中li的子类,我是绿色</a></li>
        <!-- 原理同无序列表中的a标签相同 -->
    </ul>
    <ul class="cyan">
        <li>我是另一个ul中li的子类,我也是橙色</li>
        <li>我是另一个ul中li的子类,我也是橙色</li>
        <li>我是另一个ul中li的子类,我也是橙色</li>
        <li><a href="#">我是ul中li的子类,我是青色</a></li>
        <li><a href="#">我是ul中li的子类,我是青色</a></li>
        <li><a href="#">我是ul中li的子类,我是青色</a></li>
    </ul>
    
</body>

如下的代码可以实现选中有序列表中的列表项:

      ol li
      {
          color: red;
      }

还可以选中更多级别的子标签,如下选择的是列表项中的a标签:

      ol li a
      {
          color: blue;
      }

 还有一种写法是直接将标签的class属性作为父类,也就是说允许类选择器和标签选择器混用~

同理Id选择器也支持这样的操作,这里不再赘述~ 

完整代码不沾了,效果如下:

  

上述的犯规写法要注意一下:ul或ol中的元素必须包裹在li——即列表项中,负责不能按照列表项正常显示~ 

二.并集选择器

与后代选择器的功能从某种角度来说恰恰相反:后代选择器某种程度上是为了将样式区分得更细,而并集选择器则是为了方便控制多种标签的样式一致而诞生的

下述结构文件中有多种标签:

<body>
    <div>熊大</div>
    <span>熊二</span>
    <p>光头强</p>
    <ul class=" num">
        <li>亚古兽</li>
        <li>加布兽</li>
        <li>哥玛兽</li>
    </ul>

注意并集选择器的语法——标签相互之间用逗号隔开 :

    <style>
      div,
      span,
      .num
      {
          color: cadetblue;
          font-size: 30px;
      }
      /* 并集选择器实际上就是标签选择器的复合体 */
      /* 格式上一般竖着写,通过逗号隔开,实现了多种标签的合体选择。 */
    </style>

 效果如下——被选中的标签样式均保持一致:

三.伪类选择器

伪类选择器(pseudo-class selector)是 CSS 中一类选择器,该选择器可以说是CSS基础里最抽象的选择器了,它们可以选中 HTML 中某些状态(如 hover、active、visited等)下的元素,从而改变元素的样式。同一个标签,根据其不同的种状态,有不同的样式。这就叫做“伪类”。伪类用冒号来表示。

也就是说,它的主要功能是实现某种事件下标签样式的动态变化,比如选中、点击等情况~

如下定义了结构文件:

<body>
    <h3 class="center">影视目录</h3>
    <div><a  href="https://www.iqiyi.com/v_19rrje300c.html?vfm=2008_aldbd&fv=p_02_01">点击观看迪迦奥特曼第一集</a></div>
    <div><a  href="https://www.iqiyi.com/v_19rrje2zqg.html?vfm=2008_aldbd&fv=p_02_01#curid=93776900_15c8a06cfe8511dfaa6aa4badb2c35a1">点击观看迪迦奥特曼第二集</a></div>
    <div><a  href="https://www.iqiyi.com/v_19rrje2zno.html?vfm=2008_aldbd&fv=p_02_01#curid=93777000_15c8a2f6fe8511dfaa6aa4badb2c35a1">点击观看迪迦奥特曼第三集</a></div>
    <div><a  href="https://www.iqiyi.com/v_19rrje2zs0.html?vfm=2008_aldbd&fv=p_02_01#curid=93777100_15c8a558fe8511dfaa6aa4badb2c35a1">点击观看迪迦奥特曼第四集</a></div>
    <div><a  href="https://www.iqiyi.com/v_19rrje2zj0.html?vfm=2008_aldbd&fv=p_02_01#curid=93777200_15c8a7e2fe8511dfaa6aa4badb2c35a1">点击观看迪迦奥特曼第五集</a></div>

    <div class="yinan">疑难杂症:a标签默认的属性貌似有visited属性。</div>
</body>

以及一些默认且共有的属性:

    .center
    {
        text-align:center ;
    }
    div
    {
        text-align: center;
        /* text-align的功能貌似非常广泛 */
        font-size: large;
    }

然后开始写伪类选择器:

  • a:link:规定链接标签a未被点击过所拥有的颜色~
  • a:visited:与上文恰好相反,被点击过后的颜色~
  • a:hover:光标接触时所展示的颜色~
  • a:active:当链接标签被选中后的颜色~

给大家展示一段伪类选择器的样式:

    a:link
    {
        color: black;
        text-decoration: none;
    }
    /* 没点过是黑色 */
    a:visited
    {
       color: blue;
    }
    /* 点过是蓝色 */
    /* 效果非常一般,实际开发用得少 */
    a:hover
    {
        color: crimson;
    }
    /* 光标接触为红色 */
    a:active
    {
        color:darkorange;
    }

大部分地方没什么值得注意的,有一点要说明的是text-decoration: none属性的功能是将a标签原有的下划线去掉~

此外,别的标签也可以使用伪类选择器,比如input:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        input:focus
        {
            background-color: red;
        }
        /* 选中表单元素后会变成红色 */
    </style>
</head>
<body>
    <form>
        <div>这是第一个输入框:<input type="text"> </div>
        <div><input type="text"> </div>
        <div><input type="text"> </div>
    </form>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1051075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c语言练习70:反转两次的数字

反转两次的数字 题⽬描述&#xff1a; 反转 ⼀个整数意味着倒置它的所有位。 例如&#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 &#xff0c;不保留前导零 。 给你⼀个整数 num &#xff0c;反转 num 得到 reversed1 &#xff0c;接着反转 reversed1 得到 revers…

使用KEIL自带的仿真器仿真遇到问题解决

*** error 65: access violation at 0x40021000 : no read permission 修改debug选项设置为下方内容。

Java之多线程的生产者消费者问题的详细解析

3.生产者消费者 3.1生产者和消费者模式概述【应用】 概述 生产者消费者模式是一个十分经典的多线程协作的模式&#xff0c;弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。 所谓生产者消费者问题&#xff0c;实际上主要是包含了两类线程&#xff1a; 一类是生产者…

MJ 种的摄影提示词关键字

景别 Front view photo 正面照 Front view photo of a Boston Terrier with smileSide view photo 侧身照 Side view photo of a Boston Terrier with smileBack view photo 背影照 Back view photo of a Boston TerrierFull body 全身照 Full body photo of a Boston Ter…

electron之快速上手

前一篇文章已经介绍了如何创建一个electron项目&#xff0c;没有看过的小伙伴可以去实操一下。 接下来给大家介绍一下electron项目的架构是什么样的。 electron之快速上手 electron项目一般有两个进程&#xff1a;主进程和渲染进程。 主进程&#xff1a;整个项目的唯一入口&…

2.物联网射频识别,RFID通信原理,RFID读写器与标签无线交互方式、数据反馈方式,RFID调制与解调、编码方式,不同RFID标签与读写器

一。RFID无线识别的原理 1.RFID系统无线通信基本原理 如下图所示&#xff0c;左边是读写器&#xff08;刷卡器&#xff09;&#xff0c;右边是标签&#xff08;卡&#xff09;&#xff0c;中间通过无线通信方式。 标签&#xff1a;&#xff08;卡&#xff09; 读写器&#xff…

Sound/播放提示音, Haptics/触觉反馈, LocalNotification/本地通知 的使用

1. Sound 播放提示音 1.1 音频文件: tada.mp3&#xff0c; badum.mp3 1.2 文件位置截图: 1.3 实现 import AVKit/// 音频管理器 class SoundManager{// 单例对象 Singletonstatic let instance SoundManager()// 音频播放var player: AVAudioPlayer?enum SoundOption: Stri…

python二维码识别tesseract

window安装tesseract 下载路径&#xff1a; https://digi.bib.uni-mannheim.de/tesseract/ 选择 双击安装在D:\sore\teeseract-OCR后&#xff1a; 配置环境变量 配置环境变量Path&#xff1a;D:\sore\teeseract-OCR 配置语言包的环境变量TESSDATA_PREFIX&#xff1a; D:\s…

搭建自己的搜索引擎之五

一、前言 接上文 搭建自己的搜索引擎之四&#xff0c;下面继续介绍茴香豆茴字的另外两种写法。 二、Jest Jest是ES的Java Http Rest客户端&#xff0c;它主要是为了弥补以前ES自有API缺少HttpRest接口客户端的不足&#xff0c;但因为现在ES官方已经提供了RestClient ,该项目已…

Dynamic CRM开发 - 实体窗体(二)主窗体

主窗体是功能最丰富,使用场景最多的窗体。 主窗体界面如下图: 下面按照图中的序号,简述一下窗体的主要功能: 0、窗体的主要布局部分,即用户看到的内容,可以拖动右侧的字段到窗体中想要放置的地方。 默认有标题、常规(选项卡)、页脚三部分,常规处于高亮状态,即可以…

第十二章 类和对象

C面向对象的三大特性为&#xff1a;封装、继承、多态 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 例如&#xff1a; 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重...&#xff0c;行为有走、跑、跳、吃饭、唱歌... 车也可以作为对象&#xff0c;…

docker安装apisix全教程包含windows和linux

docker安装apisix 一、Windows安装1、首先需要安装docker和docker compose&#xff0c;如果直接安装docker desktop&#xff0c;会自动安装docker compose。2、重新启动电脑3、访问 Docker 的下载&#xff08;[https://www.docker.com/products/docker-desktop](https://www.do…

RocketMQ 版本升级测试

一、背景 RocketMQ 版本升级&#xff0c;3.6.4升级到5.1.3。 二、机器资源 应用端&#xff1a; 10.XX.67.249【机器 1】 cd /home/product/logs/dolphin_task_test_logs/ vim info.logMQ 服务端&#xff1a; 旧MQ 10.XX.108.249 broker-001。用于测试升级NameServer【机器 2…

react库的基础学习

React介绍 React.js是前端三大新框架&#xff1a;Angular.js、React.js、Vue.js之一&#xff0c;这三大新框架的很多理念是相同的&#xff0c;但是也有各自的特点。 React起源于Facebook的内部项目&#xff0c;因为该公司对市场上所有 JavaScript MVC 框架&#xff0c;都不满…

【数据库】形式化关系查询语言(一):关系代数Relational Algebra

目录 一、关系代数Relational Algebra 1. 基本运算 a. 选择运算&#xff08;Select Operation&#xff09; b. 投影运算&#xff08;Project Operation&#xff09; 组合 c. 并运算&#xff08;Union Operation&#xff09; d. 集合差运算&#xff08;Set Difference Op…

【C++】vector基本接口介绍

vector接口目录&#xff1a; 一、vector的初步介绍 1.1vector和string的联系与不同 1.2 vector的源码参数 二、vector的四种构造&#xff08;缺省填充元素迭代器拷贝构造&#xff09; 三、vecto的扩容操作与机制 3.1resize&#xff08;老朋友了&#xff0c;不会就去看str…

Linux文件查找,别名,用户组综合练习

1.文件查看: 查看/etc/passwd文件的第5行 [rootserver ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologi…

epoll与socket缓冲区的恩恩怨怨

文章目录 前言一、什么是socket缓冲区二、阻塞与非阻塞内核缓冲区1、如果发送缓冲区满了会怎么样阻塞非阻塞 2、如果接受缓冲区为空会怎么样阻塞非阻塞 三、epoll与缓冲区的恩恩怨怨水平触发边缘触发非阻塞阻塞 结论 前言 本文深挖网络编程中的缓冲区&#xff0c;从什么是缓冲…

排序:基数排序算法分析

1.算法思想 假设长度为n的线性表中每个结点aj的关键字由d元组 ( k j d − 1 , k j d − 2 , k j d − 3 , . . . , k j 1 , k j 0 ) (k_{j}^{d-1},k_{j}^{d-2},k_{j}^{d-3},... ,k_{j}^{1} ,k_{j}^{0}) (kjd−1​,kjd−2​,kjd−3​,...,kj1​,kj0​)组成&#xff0c; 其中&am…

微信小程序开发基础(一)认识小程序

微信小程序&#xff0c;小程序的一种&#xff0c;英文名Wechat Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用。微信小程序是一种不用下载就能使用的应用&#xff0c;也是…