CSS常用十大选择器(理论+代码实操)

HTML代码实例

注意:拷贝后本地运行注意head标签中的link标签的href属性是否正确

我的目录结构:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
		<link rel="stylesheet" href="../css/selector.css">
	</head>
	<body>
		<!--元素选择器-->
		<a href="https://www.baidu.com/">这是一个a标签</a>
		
		<!--id选择器-->
		<div id="aa">aa-div</div>
		
		<!--类选择器-->
		<div class="AA">AA-div1</div>
		<div class="AA">AA-div2</div>
		
		<!--属性选择器-->
		<br><br>
		<em lang="en" class="em1">english</em><br><br>
		<em lang="zh" class="em1">中文</em> <br><br>
		<em lang="fr">french</em><br><br>
		<em lang="ru">ruissa</em><br><br>
		
		<!--包含选择器-->
		<div class="BB0">
			<p>1111</p>
			<div>
				<p class="BB2">BB-div内部的p</p>
			</div>
		
		</div>
		<p class="BB">BB-div外部的p</p>
		
		
		<!--子选择器-->
		<table class="TB">
			<thead>
				<tr>
					<th>1</th>
					<th>2</th>
					<th id="th">3</th>
					<th>4</th>
					<th>5</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<th>1-1</th>
					<th>1-2</th>
				</tr>
				<tr>
					<th>2-1</th>
					<th>2-2</th>
				</tr>
			</tbody>
		</table>
		
		
		<!--兄弟选择器-->
		<ol>
			<li>早睡早起</li>
			<li class="BRO">多吃蔬菜</li>
			<li>心情舒畅</li>
			<li>多多运动</li>
		</ol>
		
		<!--伪类选择器-->
		
		<a class="weiLei" href="https://www.tencent.com/zh-cn/index.html">腾讯官网</a>
		
		<!--伪元素选择器-->
		<div>
			伪元素选择器------所有div元素的第一个汉字放大,加粗,红色
		</div>
	</body>
</html>

元素选择器

直接用html标签命名,对整个html文档的全部此标签生效

/*元素选择器*/
a {/*对所有的a标签生效*/
    font-size: 22px;
    color: brown;
}

在这里插入图片描述

id选择器

#+id名称,根据标签的id属性进行选择,id由用户自定义,建议保证唯一性

所有标签都具有id属性

在这里插入图片描述

/*id选择器*/
#aa {
    background: aquamarine;
}

在这里插入图片描述
首字母字号变大+红色是伪元素选择器的效果,我们稍后就讲

class选择器

.+class名称使用,根绝标签的class属性选择

所有的标签都有class属性

在这里插入图片描述

.AA {
    width: 500px;
    height: 200px;
    background: antiquewhite;
}

在这里插入图片描述

属性选择器

标签名[属性名],可以根据属性值进行多种类型的匹配
在这里插入图片描述

/*1. 是否存在*/
em[lang] {
    color: red;
}

/*2. 属性=“”*/
em[lang="zh"] {
    font-size: 100px;
}
/* class属性的=可以简写*/
em.em1 {
    font-weight: bolder;
}

/*3. 属性以“”开头*/
em[lang^="e"] {
    background: greenyellow;
}

/*4. 属性包含“”*/
em[lang*=r] {
    font-size: 50px;
    font-weight: lighter;
}

/*5. 属性以“”结尾*/
em[lang$="u"] {
    color: cornflowerblue;

}

属性是否存在

所有em标签中lang属性不为空的,字体都会变成红色

在这里插入图片描述

russia被其他效果覆盖了,其实原本也是红色

属性 = xxx

em标签中,lang标签 = zh的标签也是有的,“中文”变成了100像素大小

如果选中的属性是class属性,em[class = xxx]可以简写为em.xxx

属性以xxx开始

en属性值以e开始,所以背景变成了黄绿色

属性包含xxx

fr属性和ru属性都包含r,所以他们两个都会变成50px字号+字体更细

属性以xxx结尾

ru属性值以u结尾,所以字体颜色会变成天蓝色,覆盖掉之前的红色

包含选择器

不严格的父子关系,只要包括即可

中间的空格不写,很容易与属性选择器中的属性 = xxx的class属性简写的情况搞混,千万要注意是否有空格
在这里插入图片描述

/*包含选择器,不严格的父子关系*/
.BB0 p {
    width: 150px;
    height: 100px;
    background: aqua;

}

在这里插入图片描述
我们可以看到class为BB0的标签内部的所有p标签都生效了,也就是说对儿子和孙子都生效,都变成了aqua颜色的背景,同时宽高也被调整

父子选择器

严格的父子关系,孙子不会生效

在这里插入图片描述

/*子选择器,严格的父子关系*/
/*TB只是装饰,父子选择器在下面*/
.TB {
    border: 5px solid blue;
}

/*父子关系不严格,不生效*/
.TB > tr > th {
    background: black;
}


/*父子关系严格,生效,所有的孩子都会生效*/
.TB > thead > tr > th {
    border: 2px solid black;
}

在这里插入图片描述
不严格的父子关系没生效(表头的背景为黑色没生效)

严格的父子关系生效了(黑色的边框线)

兄弟选择器

分为一般兄弟选择器和紧邻兄弟选择器

一般兄弟选择器

用~连接兄弟,从基准选择器开始,向下识别它的所有兄弟元素(不包括基准选择器)

紧邻兄弟选择器

用+连接兄弟选择器,从基准选择器开始,向下识别它的第一个兄弟元素(不包括基准选择器

在这里插入图片描述

/*兄弟选择器*/
/*基准选择器~基准选择器的兄弟选择器*/


/*一般兄弟选择器*/
/*从基准选择器开始,向下识别它的所有对应的兄弟元素*/
.TB > thead > tr > #th ~ th {
    background: green;
}

/*紧邻兄弟选择器*/
/*从基准选择器开始,向下识别它的紧邻的一个兄弟元素*/
.BRO + li {
    font-style: italic;
    color: orangered;

}

在这里插入图片描述

在这里插入图片描述

我们可以看到表头的id为th的th元素的后面的所有兄弟th元素都匹配到了,背景颜色变成了green(一般兄弟选择器

我们还可以看到class属性为BRO的li元素的下一个兄弟li元素被匹配,字体变成了斜体,颜色为橘红色(紧邻兄弟选择器

组合选择器

其实就是各种选择器的排列组合,不同的选择器用逗号隔开

/*组合选择器*/
/*不同的选择器,用逗号隔开,表示设置相同的属性*/

.BB0 p, .TB > thead > tr > th {/*包含选择器,父子选择器*/
    width: 200px;
    height: 300px;
    background: blueviolet;
}

在这里插入图片描述
对应部分的背景颜色都变成了紫色

伪类选择器&&伪元素选择器

伪,假装的意思;
好像有这个类,但实际上没有
好像有这个元素,但实际没有

伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于html文档之外的抽象,所以叫伪类。

伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于html文档之中,所以叫伪元素。

实际使用有很多伪选择器,比如anchor伪类,:before,:after,:focus等,详见

CSS 伪类 | 菜鸟教程 (runoob.com)

CSS 伪元素 | 菜鸟教程 (runoob.com)

demo

在这里插入图片描述

/*伪类选择器*/

/*anchor伪类*/
.weiLei:hover {
    color: gray;
}

/*first-child 伪类*/


/*:focus伪类。*/


/*伪元素选择器*/

div:first-letter {
    font-size: 36px;
    color: red;
    font-weight: bolder;
}

在这里插入图片描述
div元素的第一个汉字确实都更大
在这里插入图片描述

鼠标悬停时,腾讯官网字体颜色变成了灰色

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

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

相关文章

人机区别之一在于机器智能还不能提出问题

人机区别在于机器智能目前还不能提出问题。虽然机器智能已经可以通过程序和算法执行各种任务&#xff0c;但它们仍然无法像人类一样主动思考和提出问题。机器智能只能根据预设的指令或对特定情况的响应来进行操作&#xff0c;而无法产生自己的独立思考和主动提问。这是因为机器…

广东省道路货物运输资格证照片回执可手机线上办理

广东省道路运输资格证是从事道路运输业务、危险品道路运输人员的必要证件&#xff0c;而在办理该证件的过程中&#xff0c;驾驶员照片回执是一项必不可少的材料。随着科技的发展和移动互联网的普及&#xff0c;现在办理驾驶员照片回执已经不再需要亲自前往照相馆&#xff0c;而…

结合 react-webcam、three.js 与 electron 实现桌面人脸动捕应用

系列文章目录 React 使用 three.js 加载 gltf 3D模型 | three.js 入门React three.js 3D模型骨骼绑定React three.js 3D模型面部表情控制React three.js 实现人脸动捕与3D模型表情同步结合 react-webcam、three.js 与 electron 实现桌面人脸动捕应用 示例项目(github)&…

MES生产管理系统:私有云、公有云与本地化部署的比较分析

随着信息技术的迅猛发展&#xff0c;云计算作为一种新兴的技术服务模式&#xff0c;已经深入渗透到企业的日常运营中。在众多部署方式中&#xff0c;私有云、公有云和本地化部署是三种最为常见的选择。它们各自具有独特的特点和适用场景&#xff0c;并在不同程度上影响着企业的…

neo4j使用详解(结尾、neo4j的java driver使用模板及工具类——<可用于生产>)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1. 简介 本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括: 图…

Tesserocr 的安装步骤

Tesserocr 的安装 OCR&#xff0c;即 Optical Character Recognition&#xff0c;光学字符识别。是指通过扫描字符&#xff0c;然后通过其形状将其翻译成电子文本的过程。那么对于图形验证码来说&#xff0c;它都是一些不规则的字符&#xff0c;但是这些字符确实是由字符稍加扭…

精确运算为什么不能用double?

主要原因:就是因为double会导致数据不准确&#xff0c;不准确的原因如下所示 高于大小的比特会被自动删除&#xff0c;但是在删除的过程中还需要遵循 IEEE-754 规范&#xff0c;这就是我们理解的删除不应该会让数变小吗&#xff1f;为什么计算机的计算会变大? 如果最后一位是1…

Ubuntu20.04安装FloodLight最新版本

Ubuntu20.04安装FloodLight最新版本 网上的很多教程尝试了一下都不对&#xff0c;并且很多都是基于Ubuntu14的旧版本系统&#xff0c;其中的Python环境大多是基于2.0的&#xff0c;由于本人所使用的系统是Ubuntu20.04&#xff0c;后再油管澳大利亚某个学校的网络教学视频的帮助…

2024年大唐杯备考

努力更新中…… 第一章 网络架构和组网部署 1.1 5G的网络整体架构 5G网络中的中传、回传、前传&#xff08;这里属于承载网的概念&#xff09; CU和DU之间是中传 BBU和5GC之间是回传 BBU和AAU之间是前传&#xff08;这个好记&#xff09; 这里竟然还藏了MEC&#xff08;…

【Linux】centos 7 vim默认一个tab键相当于8个空格 -> 修改成4个空格

专栏文章索引&#xff1a;Linux 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.仅本次 2.永久 一、项目场景 使用vim编辑器编写python3代码 二、问题描述 在使用vim编辑器时&#xff0c;想要缩进&am…

LangChain-25 ReAct 让大模型自己思考和决策下一步 AutoGPT实现途径、AGI重要里程碑

背景介绍 大模型ReAct&#xff08;Reasoning and Acting&#xff09;是一种新兴的技术框架&#xff0c;旨在通过逻辑推理和行动序列的构建&#xff0c;使大型语言模型&#xff08;LLM&#xff09;能够达成特定的目标。这一框架的核心思想是赋予机器模型类似人类的推理和行动能…

Qt快速入门(Opencv小案例之人脸识别)

Qt快速入门&#xff08;Opencv小案例之人脸识别&#xff09; 编译出错记录 背景 因为主要使用qt&#xff0c;并且官网下载的win版本的编译好的opencv默认是vc的&#xff0c;所以我们需要自己下载opencv的源码使用mingw自行编译&#xff0c;我直接使用的vscode。 报错 报错…

1.9 数据结构之 并查集

编程总结 在刷题之前需要反复练习的编程技巧&#xff0c;尤其是手写各类数据结构实现&#xff0c;它们好比就是全真教的上乘武功 本栏目为学习笔记参考&#xff1a;https://leetcode.cn/leetbook/read/disjoint-set/oviefi/ 1.0 概述 并查集&#xff08;Union Find&#xff09…

以C++为例详解UML

以C为例详解UML —— 2024-04-14 文章目录 以C为例详解UML1. 什么是UML?2. UML模型结构3. UML中类的表示4. UML中类之间的关系4.1 泛化4.2 实现4.3 关联(1) 单向关联(2) 双向关联(3) 自关联(4) 多重关联 4.4 聚合4.5 组合4.6 依赖 5. 关联、组合、聚合与依赖的区别6. 补充笔…

华为机考入门python3--(15)牛客15-求int型正整数在内存中存储时1的个数

分类&#xff1a;二进制 知识点&#xff1a; int转二进制 binary bin(n)[2:] 题目来自【牛客】 def count_ones_in_binary(n): # 将输入的整数转换为二进制字符串 # bin(n)为0b11011binary bin(n)[2:]# 初始化计数器为0 count 0 # 遍历二进制字符串的每一位 fo…

消息队列RabbitMQ入门学习

目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.收发消息 2.1.1.交换机 2.1.2.队列 2.1.3.绑定关系 2.1.4.发送消息 3.SpringAMQP 3.1WorkQueues模型 3.1.1消息接收 3.1.2测试 3.1.3.能者多劳 3.1.3.总结 3.2.交换机类型 3.3.Fanout交…

Golang | Leetcode Golang题解之第28题找出字符串中第一个匹配项的下标

题目&#xff1a; 题解&#xff1a; func strStr(haystack, needle string) int {n, m : len(haystack), len(needle)if m 0 {return 0}pi : make([]int, m)for i, j : 1, 0; i < m; i {for j > 0 && needle[i] ! needle[j] {j pi[j-1]}if needle[i] needle[…

【微信小程序——案例——本地生活(列表页面)】

案例——本地生活&#xff08;列表页面&#xff09; 九宫格中实现导航跳转——以汽车服务为案例&#xff08;之后可以全部实现页面跳转——现在先实现一个&#xff09; 在app.json中添加新页面 修改之前的九宫格view改为navitage 效果图&#xff1a; 动态设置标题内容—…

【Java】内存可见性问题是什么?

文章目录 内存模型内存可见性解决方案volatile 内存模型 什么是JAVA 内存模型&#xff1f; Java Memory Model (JAVA 内存模型&#xff09;是描述线程之间如何通过内存(memory)来进行交互。 具体说来&#xff0c; JVM中存在一个主存区&#xff08;Main Memory或Java Heap Mem…

wpf下RTSP|RTMP播放器两种渲染模式实现

技术背景 在这篇blog之前&#xff0c;我提到了wpf下播放RTMP和RTSP渲染的两种方式&#xff0c;一种是通过控件模式&#xff0c;另外一种是直接原生RTSP、RTMP播放模块&#xff0c;回调rgb&#xff0c;然后在wpf下渲染&#xff0c;本文就两种方式做个说明。 技术实现 以大牛直…