16-CSS3新增选择器

news/2025/4/2 5:45:04/

知识目标

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

如何减少文档内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. 颜色为 #5552. 字体大小为 1.6em3. 底部有 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. 边框圆角为 5px3. 阴影为 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. 颜色为 #7772. 字体大小为 1.3em--><h3>兄弟选择器示例</h3><!-- h3 + p 样式需求:1. 字体为斜体2. 颜色为 #7773. 字体大小为 0.95em--><p>这是紧跟在h3后面的段落,使用邻兄弟选择器设置样式。</p><!-- h3 ~ ol 样式需求:1. 背景颜色为 #f9f9f92. 边框为 1px 实线的 #ddd 颜色3. 内边距为 10px--><!-- ul li:first-child 样式需求:1. 字体加粗2. 字体大小为 1.1em3. 颜色为 #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. 背景颜色为 #f0f0f02. 字体加粗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. 颜色为 green2. 文本有下划线--><p>更多信息请访问 <a href="#" class="info-link">这里</a></p><!-- span.secondary 样式需求:1. 颜色为 #9992. 字体大小为 0.9em--><p><span class="secondary">这是一段次要信息</span>,需要特殊样式。</p>
</body></html>

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


http://www.ppmy.cn/news/1584535.html

相关文章

31天Python入门——第14天:异常处理

你好&#xff0c;我是安然无虞。 文章目录 异常处理1. Python异常2. 异常捕获try-except语句捕获所有的异常信息获取异常对象finally块 3. raise语句4. 自定义异常5. 函数调用里面产生的异常补充练习 异常处理 1. Python异常 Python异常指的是在程序执行过程中发生的错误或异…

AWS Bedrock 多代理蓝图存储库使用 CDK、Streamlit 和 LangFuse 运行 AWS Bedrock 多代理 AI 协作的蓝图

一、软件下载 文末提供程序和源码下载 AWS Bedrock 多代理蓝图开源程序&#xff01;是一个全面基础设施即代码 &#xff08;IaC&#xff09; 解决方案&#xff0c;用于使用 CDK、Streamlit 和 LangFuse 在 AWS 上运行多代理 AI 协作。无论您是经验丰富的开发人员还是刚刚开始使…

Cursor 使用 APIkey 配置 Anthropic Claude BaseURL , gpt-4o,deepseek等大模型代理指南

背景 Cursor IDE 原生仅支持配置 ChatGPT 的 API Base URL&#xff0c;无法直接集成 ​Anthropic Claude 的 API 服务。 解决方案 本文将通过以下方式实现 Cursor 集成 Claude API&#xff1a; ✅ 构建中转 API 桥接层 ✅ 配置自定义 API 端点 ✅ 实现协议格式转换 前置条件…

瑞芯微RKRGA(librga)Buffer API 分析

一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中&#xff0c;有两组配置 buffer 的API&#xff1a; importbuffer 方式&#xff1a; importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式&#xff1a; wrapbuffer_virtualaddr wrapb…

flutter优秀项目推荐

以下是几个值得推荐的 Flutter 开源项目&#xff0c;涵盖不同领域&#xff08;UI 库、工具、完整应用等&#xff09;&#xff0c;适合学习和实际开发参考&#xff1a; 1. UI 组件库 & 动画 (1) flutter_ui_challenges 亮点&#xff1a;100 个精美的 UI 设计实现&#xff…

通过 Adobe Acrobat DC 实现 Word 到 PDF 的不可逆转换

目录 一、前言二、什么是不可逆PDF转换&#xff1f;三、准备工作四、详细转换步骤4.1 基础转换4.2 文档转曲&#xff08;最终不可逆处理&#xff09;4.2.1 检查并安装所需字体&#xff08;转曲前建议完成&#xff09;4.2.2 PDF文件转曲步骤 五、验证转换效果六、常见问题解决方…

C++学习之Linux文件编译、调试及库制作

目录 1.rwx对于文件和目录的区别 2.gcc编译过程 3.数据段合并和地址回填说明 4.gcc编译其他参数 5.函数库简介 6.静态库的使用 7.动态库的简介 8.动态库制作基本流程 9.启动APP错误解决方案12 10.启动APP错误解决方案34 11.makefile一组规则 12.makefile的两个函数 …

若依专题——基础应用篇

若依搭建 搭建后端项目 ① Git 克隆并初始化项目 ② MySQL 导入与配置 ③ 启动 Redis 搭建后端项目注意事项&#xff1f; ① 项目初始化慢&#xff0c;执行clean、package ② MySQL导入后&#xff0c;修改application-druid.yml ③ Redis有密码&#xff0c;修改ap…