16-CSS3新增选择器

news2025/4/2 22:53:32

知识目标

  • 掌握属性选择器的使用
  • 掌握关系选择器的使用
  • 掌握结构化伪类选择器的使用
  • 掌握伪元素选择器的使用

如何减少文档内class属性和id属性的定义,使文档变得更加简洁?
可以通过属性选择器、关系选择器、结构化伪类选择器、伪元素选择器。

1. 属性选择器

1.1 E[attribute]选择器

E[attribute]选择器用于选取标签名称为E(代指标签名称),并且定义了attribute(代指属性名称)属性的标签。其中,E可以省略,如果省略则表示可以匹配满足条件的任意标签
例1:选取包含id属性的<div>标签:div[id]
例2:选取包含align属性,属性值为center的全部标签:[align=center]

1.2 E[attribute~=value]选择器

E[attribute~=value]选择器用于选取标签名称为E(代指标签名称),并且定义了attribute(代指属性名称)属性,包含某个value(代指属性值字符)属性值的标签。
E[attribute]选择器E[attribute~=value]选择器区别在于前者需要属性和属性值完全一致,后者只要标签包含属性值即可被选中。

1.3 E[attribute|=value]

E[attribute|=value]选择器能够选取带有value属性值或以value-开头的属性值的标签,不包括两个属性的标签。
例1: [class|=a] { } 选取属性值为a或属性值以a-开头的标签。一般用于匹配en-US、zh-CN 等。

1.4 E[attribute^=value]

E[attribute^=value]选择器能够选取以value开头的属性值的标签。
例1:选取属性值以one开头的标签 [class ^=one] {}

1.5 E[attribute$=value]

E[attribute$=value]选择器用于选择属性值后缀为value(代指属性值字符)字符的标签。
例1: div[id$=section] 选取包含id属性,且id属性值以section字符串结尾的div标签。

1.6 E[attribute*=value]

E[attribute*=value]选择器用于选择属性值包含value(代指属性值字符)字符的标签。
例1:div[i*=section] 选取包含id属性,且id属性值包含“section”字符的<div>标签

1.7 总结

选择器和作用列表如下:
在这里插入图片描述

2. 关系选择器

2.1 子元素选择器

子元素选择器主要用来选择父级标签的子标签,由符号“>”连接标签名称。
例如:h1>strong选取<h1>标签中的子标签<strong>标签

2.2 兄弟选择器

兄弟选择器可以选择位于同一个父标签中,指定标签后面,具有并列关系的子标签。在CSS3中,兄弟选择器分为邻近兄弟选择器和普通兄弟选择器两种。

2.2.1 邻近兄弟选择器

使用加号**“+”连接前后两个选择器。选择器中的两个子标签从属同一个父标签,而且被选取子标签必须紧跟指定的标签。强调“紧接”,如A+B,选择的B必须是A之后的第一个兄弟元素**。

2.2.2 普通兄弟选择器

使用**“~”**来连接前后两个选择器。选择器中的两个子标签从属同一个父标签,而且被选取子标签需要位于指定的标签后面。如A~B只要B是A后面出现的兄弟都能被选择。

3. 结构化伪类选择器

3.1 :root

:root选择器用于匹配文档根标签,在HTML中,根标签指的<html>标签。因此使用:root选择器定义的样式,对所有页面标签都生效。

3.2 :not

:not选择器可以排除设置的标签或属性。例如,h3:not(.one)会选取没有类名.one的<h3>标签。

3.3 :only-child

:only-child选择器用于选取父标签中的唯一子标签,也就是说,如果某个父标签仅有一个子标签,使用:only-child选择器可以选择这个子标签。例p:only-child能选中我是独生子,而不满足类型的div和多个孩子的标签不能被选中。

<body>
    <div>
        <p>我是独生子</p>
    </div>
    <div>
        <div>我是独生子,是div</div>
    </div>
    <div>
        <p>我是第1个段落</p>
        <p>我是第2个段落</p>
    </div>
</body>

3.4 :first-child

:first-child选择器用于选择父标签中的第一个子标签。

3.5 :last-child

:last-child选择器用于选取父标签中的最后一个子标签。

3.6 :nth-child(n)和nth-last-child(n)

:nth-child(n)选择器用于选择父标签中的第n个子标签。例如:选取父标签中的第2个子标签::nth-child(2)
:nth-last-child(n)用于选取父标签中的倒数第n个子标签。
此时还可以使用关键字、公式等进行选择;
比如:nth-child(even), 选择的是偶数孩子。
比如:nth-child(3n), 选择的是3倍数的孩子。

3.7 :first-of-type和:last-of-type

:first-of-type选择器用于匹配父标签中第1个特定类型的子标签。例如p:first-of-type,选择父标签中的第1个p类型的子标签。
:last-of-type选择器用于匹配父标签中最后1个特定类型的子标签。
nth-of-type(n)和nth-child(n)区别:前面的会把指定元素的例子排序序号再选,后面的会先排序,然后看当前的序号孩子是否满足是指定元素。
在这里插入图片描述

4. 伪元素选择器

4.1 :empty

:empty选择器用来选择没有子标签或内容为空的所有标签。

4.2 :target

:target选择器用于突出显示当前活动的目标元素。只有用户单击页面中的超链接,并且跳转到:target选择器控制的元素后,:target选择器所设置的样式才会起作用。

4.3 :before :after

:before选择器 / :after选择器用于在被选取标签的前面/后面插入内容(属于行内元素,在文档中找不到的,称为伪元素)。在使用:before选择器/ :after选择器时必须配合content属性来指定要插入的具体内容。
常用场景:1. 鼠标放上去出现的遮罩、图层 2.
在这里插入图片描述

5. 实践

我会提供代码但会将样式删除,接下来的案例题麻烦大家使用以上述学的知识来补充选择器及样式!!!可以在评论区上传自己的代码样例截图哦!!!
提供的样例代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS3 Selectors Example</title>
    <!--  整体页面样式需求:
    1. 字体使用 Arial 或无衬线字体 2. 行高为 1.6    3. 页面边距为 20px-->
</head>

<body>
    <!-- h1 样式需求:
         1. 颜色为 #333     2. 字体大小为 2em   3. 文本居中对齐 4. 文本阴影为 2px 2px 4px rgba(0, 0, 0, 0.1)  -->
    <h1>CSS3 Selectors Example</h1>
    <!-- h2 样式需求:
        1. 颜色为 #555
        2. 字体大小为 1.6em
        3. 底部有 1px 实线的 #ccc 颜色边框
        4. 底部内边距为 5px 
    -->
    <h2>属性选择器示例</h2>
    <!-- a标签样式需求,可采用E[att="value"]的方式进行选择:
        1. 颜色为橙色
        2. 去除下划线
        3. 字体加粗 -->
    <p>访问 <a href="https://www.example.com" target="_blank">安全网站</a> 获取更多信息。</p>
    <!-- 
        img[src^="images/"] 样式需求:
        1. 边框为 2px 实线的 #ccc 颜色
        2. 边框圆角为 5px
        3. 阴影为 0 0 5px rgba(0, 0, 0, 0.3)
        -->
    <p><img src="images/sample.jpg" alt="Sample Image"></p>
    <!-- highlight样式需求 采用*= 的方式:
        1. 背景颜色为黄色
        2. 字体大小为 1.1em
        -->
    <p class="highlight">这是一个高亮显示的段落。</p>
    <!-- 样式需求:  采用$=的方式
        1. 颜色为蓝色
        2. 字体为斜体
        -->
    <p>下载 <a href="document.docx">文档</a> 了解详情。</p>
    <!-- important样式需求:  采用~=选择的方式
        1. 颜色为红色
        2. 字体加粗
        3. 有下划线
        -->
    <p>这里有个 <span class="important">重要</span> 的信息。</p>
    <!-- li[data-lang|="en"] 样式需求:
        1. 背景颜色为浅蓝色
        2. 字体大小为 0.9em
        -->
    <!--  ul 样式需求:
        1. 列表样式类型为圆形
        2. 左内边距为 20px
        -->
    <ul>
        <li data-lang="en-US">英文列表项1</li>
        <li data-lang="fr-FR">法文列表项2</li>
        <li data-lang="en-GB">英文列表项3</li>
    </ul>
    <!-- h3 样式需求:
        1. 颜色为 #777
        2. 字体大小为 1.3em
        -->
    <h3>兄弟选择器示例</h3>

    <!-- h3 + p 样式需求:
        1. 字体为斜体
        2. 颜色为 #777
        3. 字体大小为 0.95em
        -->
    <p>这是紧跟在h3后面的段落,使用邻兄弟选择器设置样式。</p>
    <!-- 
        h3 ~ ol 样式需求:
        1. 背景颜色为 #f9f9f9
        2. 边框为 1px 实线的 #ddd 颜色
        3. 内边距为 10px
        -->
    <!-- 
        ul li:first-child 样式需求:
        1. 字体加粗
        2. 字体大小为 1.1em
        3. 颜色为 #333
        -->
    <!-- 
        ul li:last-child 样式需求:
        1. 有下划线
        2. 字体为斜体
        -->
    <!-- 
        ul li:nth-child(3n) 样式需求:
        背景颜色为 #eee
        -->
    <!-- 
        ol li:nth-child(even) 样式需求:
        1. 颜色为紫色
        2. 字体大小为 1.05em
        -->
    <!-- 
        ol li:nth-child(odd) 样式需求:
        颜色为 #555
        -->
    <!-- 
        ol 样式需求:
        列表样式类型为大写罗马数字
        左内边距为 25px
        -->
    <!-- 
        p 样式需求:
        颜色为 #666
        -->
    <ol>
        <li>有序列表项1</li>
        <li>有序列表项2</li>
        <li>有序列表项3</li>
        <li>有序列表项4</li>
        <li>有序列表项5</li>
    </ol>
    <!-- 
        h2 样式需求:同上面的 h2 样式需求
        -->
    <h2>表格示例</h2>
    <!-- 
        table 样式需求:
        1. 边框合并,无边框间距
        2. 宽度为 100%
        -->
    <!-- 
        th 样式需求:
        1. 背景颜色为 #f0f0f0
        2. 字体加粗
        3. 文本居中对齐
        4. 内边距为 8px
        -->
    <!-- 
        td 样式需求:
        1. 边框为 1px 实线的 #ccc 颜色
        2. 内边距为 8px
        -->
    <!-- 
        奇数孩子样式需求:可使用:nth-child(even)的方式 使用
        背景颜色为 #f9f9f9
        -->
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>年龄</th>
                <th>职业</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>25</td>
                <td>程序员</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>30</td>
                <td>设计师</td>
            </tr>
            <tr>
                <td>王五</td>
                <td>22</td>
                <td>学生</td>
            </tr>
        </tbody>
    </table>
    <!-- 
        a.info-link 样式需求:
        1. 颜色为 green
        2. 文本有下划线
        -->
    <p>更多信息请访问 <a href="#" class="info-link">这里</a></p>
    <!-- 
        span.secondary 样式需求:
        1. 颜色为 #999
        2. 字体大小为 0.9em
        -->
    <p><span class="secondary">这是一段次要信息</span>,需要特殊样式。</p>
</body>

</html>

需实现的样式如图所示:
在这里插入图片描述

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

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

相关文章

SQL Server:用户权限

目录 创建 & 删除1. 创建用户命令整理创建 admin2 用户创建 admin_super 用户 2. 删除用户命令删除 admin2 用户删除 admin_super 用户 3. 创建时权限的区别admin2 用户权限admin_super 用户权限 查看方法一&#xff1a;使用对象资源管理器&#xff08;图形化界面&#xff…

服务器数据恢复—误格式化NTFS文件系统分区别慌,NTFS数据复活秘籍

NTFS文件系统下格式化在理论上不会对数据造成太大影响&#xff0c;但有可能造成部分文件目录结构丢失的情况。下面介绍一个人为误操作导致服务器磁盘阵列中的NTFS文件系统分区被格式化后的服务器数据恢复案例。 服务器数据恢复过程&#xff1a; 1、将故障服务器连接到一台备份…

【3】数据结构的双向链表章

目录标题 双向链表的定义双向链表的初始化双向链表的创建插入操作删除操作 双向链表总代码与调试 双向链表的定义 结点结构组成&#xff1a;数据域&#xff08;data&#xff09;、指针域&#xff08;pre&#xff09;、指针域&#xff08;next&#xff09;。其中&#xff0c; da…

蓝桥杯杯赛-日期模拟

知识点 处理日期 1. 按天枚举日期&#xff1a;逐天遍历起始日期到结束日期范围内的每个日期。 2. 处理闰年&#xff1a;正确判断闰年条件。闰年定义为&#xff1a;年份 满足以下任意一个条件&#xff1a;(闰年的2月只有29天) 满足下面一个条件就是闰年 1> 是 400 的倍数…

搭建开源笔记平台:outline

折腾的意义 为什么要自己搭建一个笔记平台&#xff1f;没理由&#xff0c;就是突然想试试。有时候突然有个想法&#xff0c;搜了一下正好有合适的方案&#xff0c;就顺手试一下。 其实已经有很多成熟的笔记软件&#xff0c;例如Notion/OneNote&#xff0c;但谁不想要一个数据完…

Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能

Unity中的Gizmos功能是用于在场景视图中绘制辅助图形或图标的工具&#xff0c;帮助开发者在编辑模式下直观调试和可视化游戏对象的位置、范围、方向等信息。 一.定义概述 Gizomsd 概述 Gizoms是Unity提供的一个API&#xff0c;或者叫做一个工具类&#xff0c;包含一系列静态…

电脑屏幕亮度随心控,在Windows上自由调整屏幕亮度的方法

调整电脑屏幕的亮度对于保护视力和适应不同环境光线条件非常重要。无论是在白天强光下还是夜晚昏暗环境中&#xff0c;合适的屏幕亮度都能让您的眼睛更加舒适。本文中简鹿办公小编将向您介绍几种在 Windows 系统中调整屏幕亮度的方法。 方法一&#xff1a;使用快捷键 大多数笔…

presto行转列

presto的行列转换和spark、hive一样也是通过外链语句实现的&#xff0c;只不过语法和关键子有点不同&#xff0c;如下 with tmp1 as (select 1,2,3 as a1,4,5,6 as a2 ) select * from tmp1 cross join unnest(split(tmp1.a1, ,),split(tmp1.a2, ,) ) as b(a1s,a2s) 结果如下

51c自动驾驶~合集15

我自己的原文哦~ https://blog.51cto.com/whaosoft/11720657 #DRAMA 首个基于Mamba的端到端运动规划器&#xff08;新加坡国立&#xff09; 运动规划是一项具有挑战性的任务&#xff0c;在高度动态和复杂的环境中生成安全可行的轨迹&#xff0c;形成自动驾驶汽车的核心能…

拼多多 anti-token unidbg 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向分析 版本7.3-7.4 都试过加密没什…

【Git】5 个分区的切换方式及示例

目录 1. **工作区&#xff08;Working Directory&#xff09;**2. **缓存区&#xff08;Stage/Index&#xff09;**3. **本地仓库&#xff08;Local Repository&#xff09;**4. **远程仓库&#xff08;Remote Repository&#xff09;**5. **贮藏区&#xff08;Stash&#xff0…

Java高频面试之并发编程-02

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;进程和线程的区别是什么&#xff1f; 1. 资源分配与独立性 进程&#xff1a; 独立性&#xff1a;每个进程拥有独立的内存…

openwebui和keycloak集成,使用keycloak的用户名和密码登录

1&#xff0c;实现效果 使用keycloak定义的用户名和密码&#xff0c;直接登录openwebui 2&#xff0c;实现原理 keycloak中用户信息中包含用户名和密码&#xff0c;以及email。 使用keycloak中的用户名和密码登录之后&#xff0c;会用email创建一个openwebui的账号。之后每次…

【区块链安全 | 第八篇】多签机制及恶意多签

部分参考&#xff1a;慢雾科技 文章目录 为什么需要多签多签机制Tron钱包下的恶意多签Tron 钱包多签权限分类Tron 多签机制的运作方式 恶意多签的过程黑客通过多签机制控制账户黑客剥夺用户权限&#xff0c;完全控制账户 恶意多签成因 在区块链中&#xff0c;多签&#xff08;M…

二月公开赛Web-ssrfme

目录 环境搭建 题目分析 分析代码 解题过程 Redis未授权访问 寻找Flag 环境搭建 进入含有docker-compose.yml的文件内&#xff0c;拉取容器镜像 docker-compose up -d 题目分析 访问容器地址172.25.254.200:8091查看题目 分析代码 url通过GET请求访问界面&#xff0c…

告别枯燥工作,走向自动化

嘿&#xff0c;小伙伴们&#xff01;今天给你们介绍两款超实用的RPA办公自动化软件&#xff0c;用它们&#xff0c;再也不用像机器一样做重复劳动啦&#xff0c;超省时间&#xff01; 工具名称&#xff1a;影刀RPA&#xff08;类似产品&#xff0c;八爪鱼 RPA&#xff0c;操作上…

可信数据空间:构筑安全可控数据流通

前言&#xff1a;可信数据空间是一种数据基础设施&#xff0c;发展可信数据空间是全国及各地数据基础设施建设的重要方面。国内数据空间的探索和实践仍然数据探索阶段。本期分享&#xff1a;可信数据空间构筑安全可控数据流通&#xff0c;包括可信数据空间技术介绍、如何助力数…

Zookeeper特性与节点数据类型

数据结构和监听机制 CP 文件系统形式存储 观察者模式监听节点数据变化、 临时节点客户端超时或发生异常节点就会删除 2888同步数据 3888选举端口 1.什么是Zookeeper ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来…

处理 Linux 信号:进程控制与异常管理的核心

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 在 Linux 操作系统中&#xff0c;信号是用于进程间通信的一种机制&#xff0c;能够向进程发送通知&#xff0c;指示某些事件的发生。信号通常由操作系统内核、硬件中断或其他进程发送。接收和处理信号是 Li…

【蓝桥杯每日一题】4.1

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x "今日秃头刷题&#xff0c;明日荣耀加冕&#xff01;" 今天我们来练习二分算法 不熟悉二分算法的朋友可以看&#xff1a;【C语言刷怪篇】二分法_编程解决算术问题-CSDN博客 …