CSS:选择器 / 14种类型

理解css选择器

CSS选择器是CSS(层叠样式表)中的关键部分,它允许开发者指定哪些HTML元素应该被应用一组特定的样式规则。选择器可以非常具体,只针对一个元素,也可以相当宽泛,影响多个元素。理解CSS选择器对于创建响应式、美观且功能丰富的网页至关重要。

一、标签/类型/元素选择器

类型选择器(也称为元素选择器)基于HTML元素的名称来选择元素。例如,p选择器会选择所有<p>元素。

p {  
  color: blue;  
}

二、类选择器

类选择器通过HTML元素的class属性来选择元素。在CSS中,类选择器以点号.开头,后跟类名。例如,.intro选择器会选择所有class="intro"的元素。

.intro {  
  font-weight: bold;  
}

三、id选择器

ID选择器通过HTML元素的id属性来选择元素。ID在HTML文档中必须是唯一的。在CSS中,ID选择器以井号#开头,后跟ID名。例如,#header选择器会选择id="header"的元素。

#header {  
  background-color: yellow;  
}

四、属性选择器

属性选择器可以根据元素的属性及属性值来选择元素。例如,选择所有带有type="text"属性的<input>元素。

[attribute] {  
  /* CSS 规则 */  
}  
  
[attribute="value"] {  
  /* 当属性值完全等于"value"时应用的CSS规则 */  
}  
  
[attribute^="value"] {  
  /* 当属性值以"value"开头时应用的CSS规则 */  
}  
  
[attribute$="value"] {  
  /* 当属性值以"value"结尾时应用的CSS规则 */  
}  
  
[attribute*="value"] {  
  /* 当属性值中包含"value"时应用的CSS规则 */  
}  
  
[attribute|="value"] {  
  /* 选择其属性值等于"value"或以"value-"开头的元素(适用于语言代码等) */  
}

五、后代选择器

后代选择器通过空格分隔两个选择器,以选择第一个选择器的后代中符合第二个选择器的元素。例如,div p会选择所有<div>元素内的<p>元素。

div p {  
  font-size: 14px;  
}

六、子选择器

子选择器通过>符号选择直接子元素。例如,ul > li会选择所有直接位于<ul>元素内的<li>元素,但不会选择嵌套的<li>元素内的<li>

ul > li {  
  list-style-type: none;  
}

七、伪类选择器

伪类选择器用于定义元素的特殊状态,如:hover(鼠标悬停时)、:active(元素被激活时,如鼠标点击时)等。

a:hover {  
  color: red;  
}

八、通用选择器

在CSS中,通用选择器(也称为通配符选择器)是一个星号(*)字符,它可以匹配文档中的任何元素。使用通用选择器时,你可以为页面上的所有元素设置样式,但通常这并不是最佳实践,因为它可能会导致性能问题,并且使得样式表难以维护。然而,在某些情况下,它仍然可以非常有用。

通用选择器的使用

8.1、为所有元素设置样式

* {  
  margin: 0;  
  padding: 0;  
  box-sizing: border-box;  
}

在这个例子中,通用选择器被用来为所有元素设置marginpaddingbox-sizing属性。这是一个常见的CSS重置或标准化做法,目的是去除不同浏览器之间默认样式的差异,并提供一个更加一致和可预测的起点。 

8.2、结合其他选择器使用

虽然通用选择器可以单独使用,但它也可以与其他选择器结合使用,以提供更具体的选择。然而,需要注意的是,当通用选择器与其他选择器结合使用时,它仍然会匹配所有元素,但样式只会应用到那些也符合其他选择器条件的元素上。

div * {  
  color: blue;  
}

在这个例子中,div *选择器会选择所有<div>元素内的元素,并将它们的文本颜色设置为蓝色。但是,这并不是说*只选择了<div>元素内部的元素;而是选择了所有元素,但样式只应用到了那些同时也在<div>元素内部的元素上。

8.3、注意事项

8.3.1、性能影响:虽然现代浏览器的性能已经足够好,可以处理大量的CSS规则,但滥用通用选择器(尤其是在大型项目中)仍然可能导致性能问题。这是因为浏览器需要遍历DOM树中的每个元素,并检查它们是否匹配选择器。

8.3.2、维护性:使用通用选择器会使样式表变得难以维护,因为很难快速确定哪些元素受到了哪些样式的影响。

8.3.3、最佳实践:尽量使用更具体的选择器来定位你想要样式化的元素,这样可以减少不必要的性能开销,并提高样式表的可维护性。如果确实需要重置或标准化样式,请考虑使用CSS重置库(如Normalize.css)或编写自己的、更具体的重置规则。

九、群组选择器

在CSS中,群组选择器(也称为组合选择器)允许你同时选择多个选择器,并对它们应用相同的样式规则。这可以极大地减少代码重复,并使得样式表更加简洁和易于维护。群组选择器通过逗号(,)分隔不同的选择器来实现。

h1, h2, p {  
  color: blue;  
}

十、相邻同胞 / 相邻兄弟选择器

相邻兄弟选择器使用+符号,它选择紧接在另一元素后的元素,且二者有相同的父元素。例如,h2 + p会选择紧跟在<h2>元素之后的<p>元素。

h2 + p {  
  margin-top: 0;  
}

十一、通用兄弟选择器

 通用兄弟选择器使用~符号,它选择某个元素之后的所有兄弟元素(共享相同父元素),而不仅仅是紧接在后面的元素。例如,h2 ~ p会选择所有<h2>元素之后的<p>兄弟元素。

h2 ~ p {  
  color: green;  
}

十二、伪元素选择器

伪元素选择器用于样式化元素的特定部分,如:before:after,它们在所选元素的内容前后添加新内容。

p::before {  
  content: "注意:";  
  color: red;  
}

十三、结构性伪类选择器

CSS中的结构性伪类选择器是一种特殊的选择器,它允许你根据元素在文档树中的位置来选择元素。这些选择器对于实现复杂的布局和样式效果非常有用,尤其是在没有直接的方法来通过HTML结构或类名选择元素时。

结构性伪类选择器
序号选择器解释
1:root选择文档的根元素,即<html>元素
2:nth-child(n)选择属于其父元素的第n个子元素的每个元素。n可以是数字、关键词(如oddeven),或者公式(如2n+1表示奇数)
3:nth-last-child(n):nth-child(n)类似,但它是从父元素的最后一个子元素开始计数的
4:nth-of-type(n)

选择属于其父元素中特定类型(如<p><div>)的第n个子元素。与:nth-child(n)不同,这里只考虑特定类型的元素。

5:nth-last-of-type(n):nth-of-type(n)类似,但它是从父元素的最后一个特定类型的子元素开始计数的
6:first-child选择属于其父元素的第一个子元素的每个元素
7:last-child选择属于其父元素的最后一个子元素的每个元素
8:only-child如果一个元素是其父元素的唯一子元素,则选择该元素
9:only-of-type如果一个元素是其父元素中特定类型的唯一子元素,则选择该元素
10:empty

选择没有子元素的元素(包括文本节点)。注意,空格和换行符也被视为子节点,因此这些元素不会被视为空。

11:not(selector)选择除了特定选择器匹配的元素之外的所有元素。这是一个功能强大的伪类,允许你排除掉不需要应用样式的元素
12:first-of-type 和 :last-of-type这两个伪类分别选择其父元素中特定类型的第一个和最后一个子元素。它们与:first-child:last-child相似,但仅考虑特定类型的子元素
结构性伪类选择器极大地增强了CSS的灵活性和表达能力,使得开发者能够基于元素在文档中的位置来应用样式,而不仅仅是基于它们的类型、类或ID。这有助于创建更加动态和响应式的网页布局

十四、UI元素伪类选择器

CSS中的UI元素伪类选择器主要用于定义用户界面元素的特殊状态样式,如链接的悬停(hover)、激活(active)状态,以及输入框的焦点(focus)状态等。这些伪类选择器允许你根据元素的当前状态来应用不同的样式规则,从而改善用户体验和界面的交互性

UI元素伪类选择器
序号选择器解释
1:link选择所有未访问的链接
通常与:visited伪类一起使用来区分已访问和未访问的链接
2:visited选择所有已访问的链接
需要注意的是,出于隐私考虑,一些CSS属性(如背景色和边框色)可能无法应用于:visited伪类
3:hover选择鼠标指针悬停其上的元素
常用于链接、按钮和可交互元素上,以提供视觉反馈
4:avtive选择被激活的元素
对于链接和按钮来说,:active伪类通常在鼠标点击时触发,但在鼠标按钮释放之前
5:focus选择获得焦点的元素
常用于表单输入元素(如文本框、单选按钮、复选框等)上,以指示当前哪个元素处于激活状态
6:enabled
:disabled
分别选择启用和禁用的表单元素(如输入框、按钮等)
这对于提高表单的可用性和清晰度非常有用
7:checked选择被选中的<input type="radio"><input type="checkbox"><option>元素
这允许你为选中状态提供自定义样式
8:read-only
:read-write
分别选择只读和可编辑的表单元素(如文本框)
这些伪类可以帮助你区分不同状态的表单元素,并相应地调整它们的样式
9:valid
:invalid
分别选择通过验证和未通过验证的表单元素
这些伪类对于实现表单验证反馈非常有用,可以直观地告诉用户哪些字段需要更正
10:required
:optional
分别选择被标记为必填和可选的表单元素
这些伪类可以帮助你为不同类型的表单字段提供不同的样式或提示
使用这些UI元素伪类选择器时,你可以为不同的用户交互状态定义不同的样式规则,从而提高网站的可用性和用户体验。例如,你可以改变链接的颜色以指示它们是否已被访问,或者为表单输入框添加边框颜色以指示它们是否有效。

十五、欢迎交流指正

十六、参考链接

css选择器_百度百科

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2.5 C#视觉程序开发实例1----IO_Manager实现脉冲输出控制

2.5 C#视觉程序开发实例1----IO_Manager实现脉冲输出控制 1 目标效果视频 目标效果展示 IO_Manager 2 信号输出流程说明 为了防止线程不同步导致输出信号没有被输出&#xff0c; 尽量使用一个输出队列来进行输出的管理 3 IO_Manager中添加内容 3.0 添加两个类 1 Out_Sta…

【课程总结】Day13(下):人脸识别和MTCNN模型

前言 在上一章课程【课程总结】Day13(上):使用YOLO进行目标检测,我们了解到目标检测有两种策略,一种是以YOLO为代表的策略:特征提取→切片→分类回归;另外一种是以MTCNN为代表的策略:先图像切片→特征提取→分类和回归。因此,本章内容将深入了解MTCNN模型,包括:MTC…

Windows 11文件资源管理器选项卡的4个高级用法,肯定有你喜欢的

作为一个每天使用文件资源管理器来管理我的工作流程的人,选项卡帮助我为处于不同完成阶段的工作创建了不同的文件夹。以下是我使用选项卡提高工作效率的最佳技巧。 打开和关闭选项卡 假设你的计算机上安装了Windows 11的最新更新,请按Ctrl+E打开文件资源管理器。在我发现“…

STM32智能家居掌上屏实战:从WiFi连接到MQTT通信,打造你的家庭物联网网关

摘要: 本文深入探讨一种基于STM32的智能家居掌上屏设计方案&#xff0c;详细阐述其硬件架构、软件设计以及通信协议等关键技术细节。该方案利用WiFi构建局域网&#xff0c;实现与各类传感器、执行器的便捷交互&#xff0c;并通过TFT彩屏提供直观的控制和数据展示&#xff0c;旨…

五、保存数据到Excel、sqlite(爬虫及数据可视化)

五、保存数据到Excel、sqlite&#xff08;爬虫及数据可视化&#xff09; 1&#xff0c;保存数据到excel1.1 保存九九乘法表到excel&#xff08;1&#xff09;代码testXwlt.py&#xff08;2&#xff09;excel保存结果 1.2 爬取电影详情并保存到excel&#xff08;1&#xff09;代…

大模型周报|15 篇必读的大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.谷歌推出风格感知拖放新方法 Magic Insert 来自谷歌的研究团队提出了 Magic Insert&#xff0c;用于以物理上可信的方式将用户提供的图像中的对象拖放到不同风格的目标图像中&#xff0c;同时与目标图像的风格相匹…

基于CLIP特征的多模态大模型中的视觉短板问题

【论文极速读】 基于CLIP特征的多模态大模型中的视觉短板问题 FesianXu 20240706 at Tencent WeChat search team 前言 今天读到篇CVPR 24’的论文 [1]&#xff0c;讨论了常见的多模态大模型&#xff08;大多都基于CLIP语义特征&#xff0c;以下简称为MLLM&#xff09;中的视觉…

Git错误分析

错误案例1&#xff1a; 原因&#xff1a;TortoiseGit多次安装导致&#xff0c;会记录首次安装路径&#xff0c;若安装路径改变&#xff0c;需要配置最后安装的路径。

HTML5使用<details>标签:展开/收缩信息

details 标签提供了一种替代 JavaScript 的方法&#xff0c;它主要是提供了一个展开/收缩区域。details 标签中可以使用 summary 标签从属于 details 标签&#xff0c;单击 summary 标签中的内容文字时&#xff0c;details 标签中的其他所有从属元素将会展开或收缩。语法如下&a…

Redies基础篇(一)

Redis 是一个高性能的key-value数据库。Redies支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作&#xff0c;而且这些操作都是原子性的&#xff…

小白必看!推荐三本高质量python书籍,让你直接原地起飞

Python是一种多功能语言。它经常用作Web应用程序的脚本语言&#xff0c;嵌入到软件产品中&#xff0c;以及人工智能和系统任务管理。它既简单又强大&#xff0c;非常适合初学者和专业程序员。 python的自学书籍非常多&#xff0c;涉及基础入门、web开发、机器学习、数据分析、…

印度第二大移动提供商 3.75 亿数据待售

一个名为“xenZen”的威胁行为者已在 BreachForums 上出售 Airtel 的数据库。 该列表包含来自 3.75 亿客户的数据。 数据详情&#xff1a; 手机号码 名 出生日期 父亲的名字 地址 电子邮件ID 类型 国籍 阿达尔 带照片的身份证明详细信息 地址详细信息证明等 鉴于…

003-基于Sklearn的机器学习入门:回归分析(上)

本节及后续章节将介绍机器学习中的几种经典回归算法&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇&#xff0c;将介绍基础的线性回归方法&#xff0c;包括线性回归、逻辑回归、多项式回归和岭回归等。 2.1 回归分析概述 回归&#xff08;Regression&…

3-3 超参数

3-3 超参数 什么是超参数 超参数也是一种参数&#xff0c;它具有参数的特性&#xff0c;比如未知&#xff0c;也就是它不是一个已知常量。是一种手工可配置的设置&#xff0c;需要为它根据已有或现有的经验&#xff0c;指定“正确”的值&#xff0c;也就是人为为它设定一个值&…

SAP PS学习笔记01 - PS概述,创建Project和WBS

本章开始学习PS&#xff08;Project System&#xff09;。 1&#xff0c;PS的概述 PS&#xff08;Project System&#xff09;是SAP企业资源规划系统中的一个关键模块&#xff0c;主要用于项目管理。 它提供了一个全面的框架来规划、控制和执行项目&#xff0c;涵盖了从项目启…

AttackGen:一款基于LLM的网络安全事件响应测试工具

关于AttackGen AttackGen是一款功能强大的网络安全事件响应测试工具&#xff0c;该工具利用了大语言模型和MITRE ATT&CK框架的强大功能&#xff0c;并且能够根据研究人员选择的威胁行为组织以及自己组织的详细信息生成定制化的事件响应场景。 功能介绍 1、根据所选的威胁行…

03:Spring MVC

文章目录 一&#xff1a;Spring MVC简介1&#xff1a;说说自己对于Spring MVC的了解&#xff1f;1.1&#xff1a;流程说明&#xff1a; 一&#xff1a;Spring MVC简介 Spring MVC就是一个MVC框架&#xff0c;Spring MVC annotation式的开发比Struts2方便&#xff0c;可以直接代…

【TB作品】脉搏测量,ATMEGA8单片机,Proteus仿真,ATmega8控制脉搏测量与显示系统

硬件组成&#xff1a; LCD1602脉搏测量电路&#xff08;带灯&#xff09;蜂鸣器报警按键设置AT24C02 功能&#xff1a; &#xff08;1&#xff09;LCD1602主页显示脉搏、报警上限、报警下限&#xff1b; &#xff08;2&#xff09;五个按键&#xff1a;按键1&#xff1a;切换设…

数据库测试|Elasticsearch和ClickHouse的对决

前言 数据库作为产品架构的重要组成部分&#xff0c;一直是技术人员做产品选型的考虑因素之一。 ClkLog会经常遇到小伙伴问支持兼容哪几种数据库&#xff1f;为什么是选择ClickHouse而不是这个或那个。 由于目前市场上主流的数据库有许多&#xff0c;这次我们选择其中一个比较典…

(软件06)串口屏的应用,让你的产品显得高级一点(下篇)

本文目录 学习前言 单片机代码实现 学习前言 目前市面上我记得好像有IIC的屏幕、SPI的屏幕、并口屏幕、还有就是今天我们介绍的这个串口屏了&#xff0c;串口屏&#xff0c;就是用串口进行通讯的&#xff0c;上篇我们已经介绍了屏幕供应商提供的上位机软件进行配置好了&#…