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.mzph.cn/news/867386.shtml

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

相关文章

el-table实现固定列,及解决固定列导致部分滚动条无法拖动的问题

一、el-table实现固定列 当数据量动态变化时&#xff0c;可以为 Table 设置一个最大高度。 通过设置max-height属性为 Table 指定最大高度。此时若表格所需的高度大于最大高度&#xff0c;则会显示一个滚动条。 <div class"zn-filter-table"><!-- 表格--…

AI对于高考和IT行业的深远影响

目录 AI对IT行业的冲击及深远影响1. 工作自动化2. 新的就业机会3. 行业融合4. 技术升级和创新5. 数据的重要性 IT行业的冬天要持续多久&#xff1f;大学的软件开发类专业是否还值得报考&#xff1f;其他问题IT行业是否都是加班严重&#xff1f;35岁后就业困难是否普遍现象&…

基于TCP的在线词典系统(分阶段实现)

1.功能说明 一共四个功能&#xff1a; 注册 登录 查询单词 查询历史记录 单词和解释保存在文件中&#xff0c;单词和解释只占一行, 一行最多300个字节&#xff0c;单词和解释之间至少有一个空格。 2.功能演示 3、分阶段完成各个功能 3.1 完成服务器和客户端的连接 servic…

springcloud-alibba之FeignClient

代码地址&#xff1a;springcloud系列: springcloud 组件分析拆解 1.FeignClient的集成 springboot版本&#xff1a;3.1.5 springcloud组件版本&#xff1a;2022.0.4 nacos客户端的版本&#xff1a;2.3.2 1.引pom 这里引入了nacos和feginclient的版本 <dependency>…

【MySQL】事务四大特性以及实现原理

事务四大特性 原子性&#xff08;Atomicity&#xff09; 事务中的所有操作要么全部完成&#xff0c;要么全部不执行。如果事务中的任何一步失败&#xff0c;整个事务都会被回滚&#xff0c;以保持数据的完整性。 一致性&#xff08;Consistency&#xff09; 事务应确保数据库…

机器学习——决策树及其可视化

1、决策树概念 顾名思义&#xff0c;决策树是利用数据结构中树结构来进行判断&#xff0c;每一个结点相当于一个判断条件&#xff0c;叶子结点即是最终的类别。以鸢尾花为例&#xff0c;可以得到如下的决策树&#xff1a; 2、决策树分类的依据是什么&#xff1f; 根据前面分…

跨越语言的界限:Vue I18n 国际化指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 国际化简介 vue-i18n 安装和配置 创建语言包 基本使用 切换语言 动态翻…

CTFShow的RE题(二)

逆向5 附件无后缀&#xff0c;查一下是zip&#xff0c;解压得到一个exe一个dll文件。 往下继续看 但也根进去看看 发现是在加载的dll文件 还有一个返回时调用的函数 发现是打印函数 根据以往的经验应该是要跳转到这里&#xff0c;动调一下。 发现exe链接了dll&#xff0c;…

Lock4j简单的支持不同方案的高性能分布式锁实现及源码解析

文章目录 1.Lock4j是什么?1.1简介1.2项目地址1.3 我之前手写的分布式锁和限流的实现 2.特性3.如何使用3.1引入相关依赖3.2 配置redis或zookeeper3.3 使用方式3.3.1 注解式自动式3.3.2 手动式 4.源码解析4.1项目目录4.2实现思路 5.总结 1.Lock4j是什么? 1.1简介 lock4j是苞米…

昇思第6天

函数式自动微分 神经网络的训练主要使用反向传播算法&#xff0c;模型预测值&#xff08;logits&#xff09;与正确标签&#xff08;label&#xff09;送入损失函数&#xff08;loss function&#xff09;获得loss&#xff0c;然后进行反向传播计算&#xff0c;求得梯度&#…

【算法专题】双指针算法

1. 移动零 题目分析 对于这类数组分块的问题&#xff0c;我们应该首先想到用双指针的思路来进行处理&#xff0c;因为数组可以通过下标进行访问&#xff0c;所以说我们不用真的定义指针&#xff0c;用下标即可。比如本题就要求将数组划分为零区域和非零区域&#xff0c;我们不…

时序分析基本概念介绍——SI/crosstalk/delta delay/noise/timing Window

文章目录 前言一、Crosstalk1. Crosstalk Delay Effects2. Crosstalk Noise Effects 二、Crosstalk Analysis1. Crosstalk Delay Analysis2. Crosstalk Noise Analysis 三、如何 fix delta delay 和 noise violations1. 检查delta delay 和 noisedelta delay checknoise check …

【C语言小知识】缓冲区

缓冲区 当我们使用printf()将数据显示在屏幕上&#xff0c;或者使用scanf()函数将数据输入到电脑里&#xff0c;我们是否会产生些许疑问&#xff1f;为何输入的字符会直接显示到屏幕上等等。这里需要介绍一个C语言中的一个关键概念——缓冲区。 当我们使用老式系统进行运行代码…

suricata7 rule加载(一)加载 action

suricata7.0.5 一、前提条件 1.1 关键字注册 main | --> SuricataMain|--> PostConfLoadedSetup|--> SigTableSetupsigmatch_table是一个全局数组&#xff0c;每个元素就是一个关键字节点&#xff0c;是对关键字如何处理等相关回调函数。非常重要的一个结构&#x…

PyCharm如何安装requirements.txt中的依赖包

问题&#xff1a;下载别人的源码&#xff0c;如何安装代码中requirement.txt中的依赖包。 解决方案&#xff1a; &#xff08;1&#xff09;打开PyCharm下面的Terminal&#xff0c;先为代码创建单独的虚拟环境并进入到虚拟环境中&#xff08;每个项目单独的环境&#xff0c;这…

GlusterFS分布式存储系统

GlusterFS分布式存储系统 一&#xff0c;分布式文件系统理论基础 1.1 分布式文件系统出现 计算机通过文件系统管理&#xff0c;存储数据&#xff0c;而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长&#xff0c;单纯通过增加硬盘个数来扩展计算机文件系统的存储…

Docker搭建MySQL双主复制详细教程

在此之前需要提前安装好Docker和 Docker Compose 。 一、创建目录 首先创建一个本地数据挂载目录。 mkdir -p master1-data master2-data二、编写docker-compose.yml version: 3.7services:mysql-master1:image: mysql:5.7.36container_name: mysql-master1environment:MYSQL_…

VBA初学:零件成本统计之四(汇总计算)

第四步&#xff0c;最后进行汇总计算 汇总统计的计算 Sub count() Dim rng As Range Dim i As Long, j As Long Dim arr_s, arr, brr, crr, drr Dim rowscount As Long Dim X As Variant Dim rg As Single, xb As Single, zj As SingleMsgBox "汇总计算时间较久&#xff…

【HTML入门】第二课 - head标签下的常见标签们

目录 1 本节概要 2 head下的常见标签 2.1 网页编码设置 2.2 网页的标题 2.3 样式标签 3 head标签的内容不会显示到网页上 4 查看网页源代码 1 本节概要 上一节&#xff0c;我们说了HTML网页最基本的框架标签&#xff0c;说到标签分为head头部和body身体部分。这一小节呢…

Windows Server 2016 搭建 网络负载平衡 服务

网络负载平衡功能的安装 添加角色 默认不动————功能 勾选上 < 网络负载平衡 > 在工具中————打开 < 网络负载平衡管理器 > 网络负载平衡群集创建 注意 : 提前 将两台 web 站点服务器 都安装好 < 网络负载平衡功能 > 右键 选择 ————新建群集 ——…