【13种css选择器】学css选择器,这一篇就够了

news2025/4/26 14:10:26

举例形象让你学会,不搞官方话

  • css所有的选择器
    • 相邻兄弟选择器
    • 后续兄弟选择器
    • 后代选择器
    • 子代选择器
    • 并集选择器(多重选择器)
    • 属性选择器
    • 伪类选择器
    • 伪元素选择器
    • class选择器(类选择器)
    • id选择器
    • *选择器(通配符选择器)
    • 标签选择器
    • 组合选择器
  • css选择器权重排名

css所有的选择器

相邻兄弟选择器

以+分隔开前后选择器
用于选择与指定元素在同一层级且后一个相邻元素的元素

请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			#eg p+p {
				background-color: blue;
			}
		</style>
	</head>
	<body>
		<div id="eg">
			<p>你好</p>
			<div>
				<p>吃了吗</p>
				<p>吃的啥</p>
				<div>好吃不</div> 
				<p>太美味啦</p>
			</div>
		</div>
	</body>
</html>

这里面的#eg p+p表示:
id为eg的元素里,紧接着p元素的第一个p元素。符合这个条件的只有 <p>吃的啥</p>

如果结构是这样:

		<div id="eg"> 			
			 <p>你好</p> 
			<div>
				<p>吃了吗</p>
				<p>吃的啥</p>
				<p>1</p>
				<p>2</p>
				<p>3</p>
				<div>好吃不</div>
				<p>太美味啦</p> 			
			</div>
 		</div> ```

那么符合条件的就是

				<p>吃的啥</p>
				<p>1</p>
				<p>2</p>
				<p>3</p> 

后续兄弟选择器

以~分隔开前后选择器
用于选择与指定元素在同一层级且在它后面的所有相邻元素

请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			#eg p~p{
				background-color: blue;
				
			}
		</style>
	</head>
	<body>
		<div id="eg">
			<p>你好</p>
			<div>
				<p>吃了吗</p>
				<p>吃的啥</p>
				<div>好吃不</div>
				<p>太美味啦</p>
				<p>1</p>
				<p>2</p>
				<p>3</p>
			</div>
		</div>
	</body>
</html> 

这里面的#eg p~p表示:
id为eg的元素里,紧接着p元素的所有p元素。符合条件的:

 			<p>吃的啥</p> 
 			<p>太美味啦</p>
			<p>1</p>
			<p>2</p>
			<p>3</p> ```

在这里插入图片描述


后代选择器

以 分隔开前后选择器(空格)

			#eg p{
				background-color: blue;
			}

这里的#eg p表示:
id为eg的元素里所有的p元素背景颜色为蓝色,哪怕嵌套一百层p标签,也还是蓝色。
你的儿子,你,你爸都是你爷爷的后代,所以你爷爷都可以管你们


子代选择器

以>分隔开前后选择器

			#eg>p{
				background-color: blue;
			}

这里的#eg>p表示:
id为eg的元素里面的第一代所有p元素背景颜色为蓝色
在这个选择器里,关系是这样的:
你爸爸是你爷爷的儿子,所以你爷爷可以管你爸爸
你是你儿子的爸爸,所以你可以管你儿子
但是你爷爷管不了你,管不了你儿子,只能管邻近的子代,也就是只能管你爸爸


并集选择器(多重选择器)

以,分隔开前后选择器
请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			p,span,#ad {
				background-color: blue;
			}
		</style>
	</head>
	<body>
		<p>你好</p>
		<div>我的朋友</div>
		<span>你吃了吗</span><span>柯南</span>
		<div id='ad'>我的朋友</div>
	</body>
</html>

这里的p,span,#ad表示:
所有的p标签和所有的span标签和id名字为ad的标签,背景颜色为蓝色


属性选择器

根据元素的属性值来选择元素

请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<style>
			div[title~=add] {
				color: aqua;
				font-size: 2em;
			}
		</style>
	</head>
	<body>
		<div title="add">张三</div>
		<div title="aff add">李四</div>
		<div title="haha">王五</div>
		<div title="add">赵六</div>
	</body>
</html>

这里的div[title~=add]表示:
所有div里满足title属性里add的设置字体颜色为青色,大小为2em
在这里插入图片描述

如果是这样

div[title=add] {
			color: aqua;
			font-size: 2em; 			
		}

则表示
所有div里满足title属性里只有add的设置字体颜色为青色,大小为2em
在这里插入图片描述


伪类选择器

用来选取元素的特殊状态
如:hover :active :visited :first-child :last-child
请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<style>
			div>p:nth-child(3):hover{
				color: aqua;
				font-size: 2em;
			}
		</style>
	</head>
	<body>
		<div>
			<p>张三</p>
			<p>李四</p>
			<p>王五</p>
			<p>赵六</p>
		</div>
	</body>
</html>

这里的div>p:nth-child(3):hover表示:
div元素里的第三个p元素设置悬停效果,当鼠标悬停在这个元素上改变样式
请添加图片描述


伪元素选择器

用来选取元素的某个部分
如::before ::after
请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<style>
			p:nth-child(2)::before{
				content: '@';
			}
			p:nth-child(3)::after{
				content: '@';
			}
		</style>
	</head>
	<body>
		<div>
			<p>张三</p>
			<p>李四</p>
			<p>王五</p>
			<p>赵六</p>
		</div>
	</body>
</html>

这里的
::before指的是给第二个p元素前面加@符号;
::after指的是给第三个p元素后面加@符号
content:‘添加的元素’ 这是固定语法


class选择器(类选择器)

用.来获取元素
请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<style>
			.aaa{
				color: red;
			}
		</style>
	</head>
	<body>
		<div>
			<p class="aaa">张三</p>
			<p class="aaa">李四</p>
			<p>王五</p>
			<p>赵六</p>
		</div>
	</body>
</html>

这里的.aaa表示所有名字为aaa的元素,改变其字体颜色为红色
class选择器也叫类选择器,相当于定义某些元素为一类,直接选取这一类元素


id选择器

用#来获取元素
请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<style>
			#aaa{
				color: red;
			}
		</style>
	</head>
	<body>
		<div>
			<p id="aaa">张三</p>
			<p>李四</p>
			<p>王五</p>
			<p>赵六</p>
		</div>
	</body>
</html>

这里的#aaa表示名字为aaa的元素,改变其字体颜色为红色
id选择器的权重比类选择器更高,这意味着如果一个元素同时有id和class属性,并且这两个属性都有样式规则,那么id选择器的样式规则将被应用


*选择器(通配符选择器)

用*设置所有元素的样式

			*{
				color: red;
			}

*表示全部,上面代码的意思是页面中所有元素的字体颜色都为红色


标签选择器

用标签名字选择元素

			div{
				color: red;
			}

上面代码表示的意思是页面所有div元素的字体都为红色


组合选择器

为了应对各种布局样式,各种dom元素的复杂结构,就有了组合选择器。
组合选择器就是将各种基本选择器通过一定规则连接起来变成一个复杂的多功能选择器 基本的,单一的选择器,相当于你会不同的法术。
组合选择器,相当于你把所有法术有机结合,战斗力更猛。

组合选择器除了用在css中,对于js的dom操作,网络爬虫的html解析时,都非常有用。
常规的css,就是把这些规则应用到selector指定的元素上,组合选择器可以实现很多比较高级的功能。


css选择器权重排名

在CSS中,不同的选择器有不同的权重,当多个样式规则应用到同一个元素时,CSS会按照权重的高低来决定最终的样式。

CSS选择器权重的排名为:

  1. !important声明:权重最高,通常不建议使用,因为它会破坏CSS的层叠性,可能会引起样式冲突和难以维护的问题。
  2. 内联样式:在HTML元素中直接定义样式,也就是使用style属性。它的权重高于其他选择器,但不如!important声明。
  3. ID选择器:使用#符号定义,每个ID只能在文档中出现一次。它的权重高于类选择器和属性选择器。
  4. 类选择器、伪类选择器、属性选择器:它们的权重相等,都是一般选择器。类选择器使用.符号定义,属性选择器使用[]符号定义,伪类选择器使用:符号定义。
  5. 元素选择器,伪元素选择器:它们的权重最低,都是基本选择器。元素选择器使用标签名定义,伪元素选择器使用::符号定义。 需要注意的是,当多个选择器权重相同时,CSS会采用就近原则,选择最后出现的样式规则应用到元素上。因此,在编写CSS样式时,需要注意选择器的权重和规则的顺序,以确保样式的正确应用。

这里要说明一下:
伪类选择器的权重与类选择器和属性选择器相等,都是一般选择器。它们的权重比元素选择器低,但比伪元素选择器高

请添加图片描述

<!DOCTYPE html>
<html>
	<head>
		<style>
			#box{
				color: red;
			}
			#box{
				color: blue;
			}
		</style>
	</head>
	<body>
		<div>
			<p id="box">张三</p>
			<p>李四</p>
			<p>王五</p>
			<p>赵六</p>
		</div>
	</body>
</html>

在这里插入图片描述

因为同一个元素,给设置了不同的样式,都应用选择权重更高的样式
如果是id和class选择器选择同一元素,则应用id选择器下的样式
如果是id和id选择器选择同一元素,则应用最后设置的样式
如果在样式末尾加了!important 则不管什么选择器选择了同一元素,都会被!important无视

上面的例子如果改成这样:

			#box{
				color: red !important;
			}
			#box{
				color: blue;
			}

那一定只会显示红色,这就是css选择器的权重优先级

在这里插入图片描述

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

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

相关文章

【算法之旅】初识数据结构与算法

一名软件工程专业学生的算法之旅&#xff0c;记录自己从零开始学习数据结构与算法&#xff0c;从小白的视角学习数据结构&#xff1a;数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树等&#xff0c;学习算法&#xff1a;枚举、排序、搜索、计数、分治策略、动态…

Windows中配置docker没有hyper-v功能解决方案

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;前端领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录前言解决步骤&#xff1a;1.新建文档2. 另存为3. 功能…

Tomcat独立部署-Nginx-1.12.2配置SSL

目录 &#x1f3c6;1. 实现思路 &#x1f3c6;2. 重启服务器 &#x1f3c6;3. proxy_pass 后地址带/和不带/的url地址显示 &#x1f3c6;4. 配置SSL证书 &#x1f3c6;5. 遇到问题 &#x1f3c6;6. 参考文章 学习完本篇博客您将掌握&#xff1a; 1、使用Tomcat配置SSL域名…

SpringMVC中的拦截器不生效的问题解决以及衍生出的WebMvcConfigurationSupport继承问题思考

文章目录SpringMVC中的拦截器不生效的问题解决WebMvcConfigurationSupport继承问题思考SpringMVC中的拦截器不生效的问题解决 过滤器代码(被Spring扫描并管理)&#xff1a; Component public class StuInterceptor implements HandlerInterceptor {Overridepublic boolean pr…

Dynamics365安装失败解决及注册编写

一、修改错误昨天登录报错今天开始返回我之前设置的断点开始重新配置&#xff0c;Reporing Services配置完成后发现dynamics365还是下载失败之后下载了一上午dynamics365就一直卡在最后的界面进度条不动索性我直接把所有环境都卸载了 连同虚拟机卸载重装终于在下午的时候dynami…

设计模式---工厂模式

目录 1. 简单工厂模式 2. 工厂方法模式 1. 简单工厂模式 简单工厂模式(Simple Factory Patterm)又称为静态工厂方法模式(Static Factory Model)&#xff0c;它属于类创建型模式。在简单工厂模式中&#xff0c;可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一…

【Nginx】Nginx的安装配置

环境说明系统&#xff1a;Centos 7一、编译安装Nginx官网下载地址nginx: download#安装依赖 [rootnginx nginx-1.22.1]# yum install gcc pcre pcre-devel zlib zlib-devel -y #从官网下载Nginx安装包&#xff0c;并进行解压、编译、安装 [rootnginx ~]# wget https://nginx.or…

【第八课】空间数据基础与处理——数据结构转化

一、前言 数据结构即指数据组织的形式,是适合于计算机存储、管理和处理的数据逻辑结构。对空间数据则是地理实体的空间排列方式和相互关系的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用户无法理解,计算机程序也不能正确地处理,对同样一组数…

【C++学习】栈 | 队列 | 优先级队列 | 反向迭代器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《C学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 栈 | 队列 | 优先级队列 | 反向迭代器&#x1f63c;容器适配器&#x1f648;什么是适配器&#x1f64…

数据清洗和特征选择

数据清洗和特征选择 数据清洗和特征挖掘的工作是在灰色框中框出的部分&#xff0c;即“数据清洗>特征&#xff0c;标注数据生成>模型学习>模型应用”中的前两个步骤。 灰色框中蓝色箭头对应的是离线处理部分。主要工作是 从原始数据&#xff0c;如文本、图像或者应…

MySQL的基本语句(SELECT型)

基本MySQL语句SELECTSELECT FROM 列的别名去除重复行空值着重号算术运算符加法( )减法( - )乘法( * )除法&#xff08; / 或DIV)求模&#xff08; % 或MOD)比较运算符等于&#xff08; &#xff09;安全等于&#xff08; <> &#xff09;不等于&#xff08; ! 或 <…

WindTerm 界面/UI字体大小调节

文章目录WindTerm 界面/UI字体大小调节问题&#xff1a;解决办法&#xff1a;第一部分&#xff1a;调整编码部分字体大小第二部分&#xff1a;调整UI界面字体大小WindTerm 界面/UI字体大小调节 问题&#xff1a; 今天在使用windTerm的时候&#xff0c;发现windterm界面字体过…

MySQL基础篇1

第1章 数据库介绍 1.1 数据库概述 什么是数据库&#xff1f; 数据库就是存储数据的仓库&#xff0c;其本质是一个文件系统&#xff0c;数据按照特定的格式将数据存储起来&#xff0c;用户可以对数据库中的数据进行增加&#xff0c;修改&#xff0c;删除及查询操作。 数据库分两…

多线程的Thread 类及方法

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; ✨每日一语&#xff1a;海压竹枝低复举&#xff0c;风吹山角晦还明。 目 录&#x1f332;一. 线程的复杂性&#x1f334;二. Thread 类及常见方法&#x1f4d5;2.1 Thread 的常见构…

Dubbo的服务暴漏与服务发现源码详解

服务暴漏 如果配置需要刷新则根据配置优先级刷新服务配置 如果服务已经导出&#xff0c;则直接返回 是否异步导出&#xff08;全局或者服务级别配置了异步&#xff0c;则需要异步导出服务&#xff09; 服务暴漏入口DefaultModuleDeployer#exportServices private void exp…

Redis缓存穿透

缓存穿透&#xff1a; 缓存穿透说简单点就是⼤量请求的 key 根本不存在于缓存中&#xff0c;导致请求直接到了数据库上&#xff0c; 根本没有经过缓存这⼀层。举个例⼦&#xff1a;某个⿊客故意制造我们缓存中不存在的 key 发起⼤量 请求&#xff0c;导致⼤量请求落到数据库。…

http笔记

文章目录1、什么是http&#xff1f;2、http报文格式3、请求报文1、认识URL2、认识http方法3、认识header4、响应报文5、https加密机制1、什么是http&#xff1f; http是应用层最广泛使用的协议之一&#xff1b;其中浏览器获取到网页就是基于http实现的&#xff1b;http就是浏览…

Caddy2学习笔记——Caddy2反向代理docker版本的DERP中继服务器

一、个人环境概述 本人拥有一个国内云服务商的云主机和一个备案好的域名&#xff0c;通过caddy2来作为web服务器。我的云主机系统是Ubuntu。 我的云主机是公网ip&#xff0c;地址为&#xff1a;43.126.100.78&#xff1b;我备案好的域名是&#xff1a;hotgirl.com。后面的文章…

【量化交易笔记】3.实现数据库保存数据

上一节&#xff0c;我们通过下载相关的 pandas 数据保存为 本地csv文件&#xff0c;这一节将上节的数据以数据库方式保存。 数据库保存 采集数据部分前一节已做说明&#xff0c;这里就直接用采用前面的内容。这里着重说明的事数据库连接。对与 python 相连接的数据库有很多&a…

玩转Python的交互(命令行)模式

我喜欢使用Python的交互界面&#xff08;命令行模式&#xff09;来运行和调试Python代码。为什么不用PyCharm、VSCode&#xff1f;因为先入为主&#xff0c;加上我的DOS命令行的情结&#xff0c;我第一次安装使用Python就是用这种黑白界面的&#xff0c;平时写代码惯用EmEditor…