【CSS】选择器(基本选择器、复合选择器、属性匹配选择器、结构伪类选择器、伪元素选择器)

选择器

  • 引入方式
  • 基础选择器
  • 复合选择器
  • 属性匹配选择器
  • 结构伪类选择器
  • 伪元素选择器

引入方式

1:外联

<!-- css引入方式1:外联   外联与内嵌优先级相同,取决于加载顺序 -->

<link rel="stylesheet" href="./样式.css">

2:内嵌

<!-- css引入方式2:内嵌(内部样式)   位于 head 标签内 -->

<style>
	.myclass{
	    background-color: pink;
	 }    
</style>

3:内联

<!-- css引入方式3:内联   优先级最高 -->

<div style="background-color: red;"></div>

基础选择器

id选择器类选择器标签选择器通配符选择器

<style>
        div{
        	/* 优先级提到最高(但同样可能会被覆盖): !important */
            background-color: green !important;  
        }

        /* 标签选择器 */
        nav{
            width: 100%;
            height: 75px;
            background-color: yellow;
        }
        
        /* id选择器 */
        #mynav{
            width: 200px;
            height: 200px;
            background-color: green;
        }
        
        /* 类选择器 */
        .myclass{
            background-color: pink;
        }

        /* 通配符选择器 */
        *{
            margin: 0;
            padding: 0;
        }

		/* 优先级:id选择器 > 类选择器 > 标签选择器 > 通配符选择器 */        

    </style>

复合选择器

后代选择器直系选择器并集选择器交集选择器

<style>
        /* css选择器的权重计算: 内联(1000) > id(100)> class(10)> 标签(1)> *(0) */
        #page_header .left img{
            /* id为 page_header的标签下面的类为 left的标签下面的 img标签被选中 */
        }

        /* 后代选择器 */
        #page_header .mynav .left{  /* 100+10+10 */
        	/* 不一定是父子关系 */
            color: green;
        }

        /* 直系选择器 */
        #page_header>nav>.left{  /* 100+1+10 */
            /* 必须是父子关系 */
            color: red;
        }

        /* 并集选择器 */
        nav,li{
            /* 逗号(表示:和)*/
            font-size: 24px;
        }

        /* 交集选择器 */
        li.left{
            /* 紧挨在一起,中间无空格 */
            background-color: aquamarine;
        }
</style>

属性匹配选择器

^*$

<style>
        /* 全匹配 */
        div[class="yangshi"]{
            background-color: gold;
        }

        /* 开头匹配 */
        input[type^="t"] {
	        border: none;
	        border-bottom: 1px solid red;
        } 

        /* 结尾匹配 */
        input[type$="d"] {
	        border: none;
	        border-bottom: 1px solid red;
        }
        
        /* 包含 */
        input[type*="o"] {
	        border: none;
	        border-bottom: 1px solid red;
        } 
</style>

结构伪类选择器

:first-child:first-of-type

<style>
	#myDiv :first-child {
	 background-color: #84c284;
	}
	#myDiv span:first-of-type {
		background-color: #e6a9fc;
	}
	#myDiv2>:first-child {
		background-color: #7eb6ff;
	}
	#myDiv2>span:first-of-type {
		background-color: #ffe054;
	}
</style>
<div id="myDiv">
	<div>我是myDiv的第 1 个孩子div</div>
	<div id="myDiv_2Son">
		<p>我是myDiv_2Son的第 1 个孩子p</p>
		<span>我是myDiv_2Son的第 2 个孩子,第 1 个span</span>
	</div>
	<span>我是myDiv的第 3 个孩子,第 1 个span</span>
</div>
<div id="myDiv2">
	<div>我是myDiv2的第 1 个孩子div</div>
	<div id="myDiv2_2Son">
		<p>我是myDiv2_2Son的第 1 个孩子p</p>
		<span>我是myDiv2_2Son的第 2 个孩子,第 1 个span</span>
	</div>
	<span>我是myDiv2的第 3 个孩子,第 1 个span</span>
</div>

效果:
在这里插入图片描述

:nth-child(n):nth-of-type(n)n从1开始

<style>
	#myDiv :nth-child(2) {
		background-color: #84c284;
	}
	#myDiv p:nth-of-type(2) {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div>我是myDiv的第 1 个孩子div</div>
	<div>我是myDiv的第 2 个孩子div</div>
	<div id="myDiv_3Son">
		<span>我是myDiv_3Son的第 1 个孩子span</span>
		<p>我是myDiv_3Son的第 2 个孩子,第 1 个p</p>
		<p>我是myDiv_3Son的第 3 个孩子,第 2 个p</p>
	</div>
	<p>我是myDiv的第 4 个孩子,第 1 个p</p>
	<p>我是myDiv的第 5 个孩子,第 2 个p</p>
</div>

效果:
在这里插入图片描述

:last-child:last-of-type

<style>
	#myDiv :last-child {
	 background-color: #84c284;
	}
	#myDiv p:last-of-type {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div id="myDiv_1Son">
	<p>我是myDiv_1Son的第 1 个孩子,第 1 个p</p>
		<p>我是myDiv_1Son的第 2 个孩子,第 2 个p</p>
		<span>我是myDiv_1Son的第 3 个孩子span</span>
	</div>
	<p>我是myDiv的第 2 个孩子,第 1 个p</p>
	<p>我是myDiv的第 3 个孩子,第 2 个p</p>
	<div>我是myDiv的第 4 个孩子</div>
</div>

效果:
在这里插入图片描述

:only-child:only-of-type

<style>
	#myDiv :only-child {
		background-color: #84c284;
	}
	#myDiv p:only-of-type {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div id="myDiv_1Son">
		<div>我是myDiv_2Son唯一的孩子</div>
	</div>
	<div>我是myDiv的第 3 个孩子div</div>
	<p>我是myDiv的第 4 个孩子,唯一的p</p>
</div>

效果:
在这里插入图片描述

:not()

<style>
	#myDiv :not(:nth-child(2)) {
		background-color: #84c284;
	}
	#myDiv2 :not(p) {
		background-color: #e6a9fc;
	}
</style>
<div id="myDiv">
	<div>我是第 1 个孩子div</div>
	<p>我是第 2 个孩子p</p>
	<div>我是第 3 个孩子div</div>
</div>
<div id="myDiv2">
	<div>div</div>
	<p>p</p>
</div>

效果:
在这里插入图片描述

:hover:link:visited:active:focus:checked:disabled

<style>
	/*注意: :visited 应该在 :link 之后,:hover 必须位于 :link 和 :visited 之后, :active必须位于 :hover之后*/
	a:link{
		background-color: pink;
	}
	a:visited{
		background-color: #546aff;
	}
	a:hover{
		background-color: #e31dff;
	}
	a:active{
		background-color: #22a200;
	}
	input[type="text"]:focus{
		background-color: #93f879;
	}
	input[type="checkbox"]:checked{
		width: 30px;
		height: 30px;
	}
	button:disabled{
		background-color: #fffb00;
	}
</style>
<a href="./7.定位.html">超链接</a>
<input type="text">
<input type="checkbox">
<button disabled>按钮</button>

效果:
在这里插入图片描述

伪元素选择器

::before::after::selection::first-line::first-letter

<style>
	div::after{
		content: "啦啦啦啦"; /* 在选定元素的内容前插入内容 */
		color: #ef7878;
	}
	div::before{
		content: "嘻嘻嘻嘻"; /* 在选定元素的内容后插入内容 */
		color: #93f879;
	}
	p::selection{
		background-color: #7ffff0;
	}
	p::first-letter{
		font-size: 50px;
		font-weight: 700;
	}
	textarea::first-line{
		color: #e10730;
	}
</style>
<div>文字</div>
<p>可能产生即从次你说说对决是的上的点击菜单扫判搜索</p>
<textarea rows="5" cols="10">可能产生即从次你说说能产生即从次你说说对决是的上的点击菜单搜索</textarea>

效果:
在这里插入图片描述

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

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

相关文章

起重机检测系统源码分享

起重机检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

直播相关02-录制麦克风声音,QT 信号与槽,自定义信号和槽

一 信号与槽函数 #include "mainwindow.h" #include <QPushButton> #include <iostream> using namespace std;//我们的目的是在 window中加入一个button&#xff0c;当点击这个button后&#xff0c;关闭 MainWindow 。 MainWindow::MainWindow(QWidget …

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 GPT系列论文速通论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具…

【Unity学习心得】如何制作俯视角射击游戏

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、导入素材二、制作流程 1.制作地图2.实现人物动画和移动脚本3.制作单例模式和对象池4.制作手枪pistol和子弹bullet和子弹壳bulletShell5.制作散弹枪shotgun总…

MMLU-Pro 基准测试数据集上线,含 12k 个跨学科复杂问题,难度提升,更具挑战性!DeepSeek 数学模型一键部署

在大语言模型 (LLM) 蓬勃发展的时代&#xff0c;诸如大规模多任务语言理解 (MMLU) 之类的基准测试&#xff0c;在推动 AI 于不同领域的语言理解与推理能力迈向极限方面&#xff0c;发挥着至关重要的关键作用。 然而&#xff0c;伴随模型的持续改进与优化&#xff0c;LLM 在这些…

Vue路由:Vue router

目录 路由的基本概念 1. 路由 2. 单页应用SPA 3.前端路由的实现方式 3.1Hash模式 3.2History模式 Vue router 4 1.概述 2.安装使用 3.基础用法 3.1路由匹配规则声明 3.2动态路由匹配 3.3路由命名 3.4路由重定向 3.5路由嵌套 3.6命名视图 3.6声明式导航&编程…

el-input设置type=‘number‘和v-model.number的区别

el-input设置typenumber’与设置.number修饰符的区别 1. 设置type‘number’ 使用el-input时想收集数字类型的数据&#xff0c;我们首先会想到typenumber&#xff0c;设置完type为number时会限制我们输入的内容只能为数字&#xff0c;不能为字符/汉字等非数字类型的数值&…

【网络安全】-文件下载漏洞-pikachu

文件操作漏洞包括文件上传漏洞&#xff0c;文件包含漏洞&#xff0c;文件下载漏洞。 文章目录  前言 什么是文件下载漏洞&#xff1f; 1.常见形式&#xff1a; 常见链接形式&#xff1a; 常见参数&#xff1a; 2.利用方式&#xff1a; 3.举例&#xff1a;pikachu不安全的文件…

智能语音技术在人机交互中的应用与发展

摘要&#xff1a;本文主要探讨智能自动语音识别技术与语音合成技术在构建智能口语系统方面的作用。这两项技术实现了人机语音通信&#xff0c;建立起能听能说的智能口语系统。同时&#xff0c;引入开源 AI 智能名片小程序&#xff0c;分析其在智能语音技术应用场景下的意义与发…

使用ESP8266和OLED屏幕实现一个小型电脑性能监控

前言 最近大扫除&#xff0c;发现自己还有几个ESP8266MCU和一个0.96寸的oled小屏幕。又想起最近一直想要买一个屏幕作为性能监控&#xff0c;随机开始自己diy。 硬件&#xff1a; ESP8266 MUColed小屏幕杜邦线可以传输数据的数据线 环境 Windows系统Qt6Arduino Arduino 库…

计算架构模式之负载均衡技巧

通用负载均衡算法 负载均衡算法 -轮询 & 随机 如果服务器挂掉了&#xff0c;那么负载均衡器还是可以感知到的&#xff0c;因为连接已经断掉了。 负载均衡算法-加权轮询 假设你有4核的和8核的&#xff0c;由于你的程序没有办法跑完CPU&#xff0c;那么有可能出现4核的和8核…

Coggle数据科学 | 科大讯飞AI大赛:人岗匹配挑战赛 赛季3

本文来源公众号“Coggle数据科学”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;科大讯飞AI大赛&#xff1a;人岗匹配挑战赛 赛季3 赛题名称&#xff1a;人岗匹配挑战赛 赛季3 赛题类型&#xff1a;自然语言处理、文本匹配 赛题…

Pikachu靶场之csrf

CSRF 跨站请求伪造 CSRF入门及靶场实战 - FreeBuf网络安全行业门户 攻击者伪造恶意链接&#xff0c;诱使用户点击&#xff0c;这个链接附带了用户的认证凭据Cookie、Session等&#xff0c;执行操作如转账。 因为带了cookie、session&#xff0c;服务器认为是用户的行为。借用…

【诉讼流程-健身房-违约认定-私教课-诉讼书前提材料整理-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(2)】

【诉讼流程-健身房-违约-私教课-前期法律流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解&#xff08;2&#xff09;】 &#xff08;1&#xff09;前言说明1、目的2、一个小测试1、更换原教练2、频繁更换教练3、上课估计拖课&#xff0c;占用上课时间&#xff0c;抽烟等。4、以…

谈谈LLM训练中的“过拟合”与“欠拟合”

如今&#xff0c;由于其出色的理解、生成和操纵人类语言的能力&#xff0c;语言模型已经成为焦点。据最新调查数据显示&#xff0c;大概30%的企业计划使用非结构化数据来提高大型语言模型&#xff08;LLM&#xff09;的准确性。在训练这些语言模型时&#xff0c;一个基本挑战是…

知识笔记合集

文章目录 vsCode可以运行c程序却无法运行c程序帆软填报属性不起作用java-实体类日期类型格式化Java-数据库id字段使用雪花算法IDEA-快捷键 vsCode可以运行c程序却无法运行c程序 vsCode中的tasks.json文件中添加"-lstdc" {"tasks": [{"type": &…

【vuetify】v-select 无法正常显示,踩坑记录!

一、上代码 template <v-selectv-model"editedUser.userRole":items"roles"label"角色"item-value"value":rules"[rules.required]" ></v-select>script const editedUser ref({userRole: customer // 设置…

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大&#xff0c;但不同的语言在不同领域都有着自己的优势&#xff0c;为了强强联合&#xff0c;LabVIEW提供了强大的外部程序接口能力&#xff0c;包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等…

利用 Zero-1-2-3 进行多视图 3D 重建:从单图像到多视图 3D 模型的生成

3D 模型生成在计算机视觉领域有着广泛的应用&#xff0c;从虚拟现实到自动驾驶&#xff0c;基于单张图像的 3D 重建技术正在迅速发展。这篇博客将带你深入探索如何使用 Zero-1-2-3 框架进行多视图 3D 重建&#xff0c;通过详细解析该框架中的代码结构和功能&#xff0c;帮助你理…

MFC工控项目实例之十五定时刷新PC6325A模拟量输入

承接专栏《MFC工控项目实例之十四模拟量信号名称从文件读写》 1、在BoardTest.h文件中添加代码 class CBoardTest : public CDialog { public:short m_saveData[32];unsigned short m_cardAddr;CBoardTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnS…