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

选择器

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

引入方式

1:外联

<!-- css引入方式1:外联   外联与内嵌优先级相同,取决于加载顺序 --><link rel="stylesheet" type="text/css" href="./index.css">

2:内嵌

<!-- css引入方式2:内嵌(内部样式)   位于 head 标签内 --><style>.myclass{background-color: pink;}    
</style>

3:内联

<!-- css引入方式3:内联   优先级最高 --><div style="background-color: red;width: 100px;"></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;}/* ~所有弟弟  +紧邻的弟弟 */#bro+span {background-color: green;}
</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>

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

:nth-child(公式)

<style>/* 选择div标签的奇数个 odd */div:nth-child(2n-1){background-color: #ecff7f;}/* 选择div标签的偶数个 even */div:nth-child(2n){background-color: #7e9aff;}/* 选择li标签的3的倍数个 */li:nth-child(3n){background-color: #ecff7f;}/* 选择li标签的第5个之后的标签(包括第5个) */li:nth-child(n+5){color: deeppink;}/* 选择li标签的第2个之前的标签(包括第2个) */li:nth-child(-n+2){color: #0fa612;}
</style>
<div>我是第 1 个</div>
<div>我是第 2 个</div>
<div>我是第 3 个</div>
<div>我是第 4 个</div>
<ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li>
</ul>

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

: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;}/* :link :visited 未访问时和已访问时 */a:visited{background-color: #546aff;}/* :hover 鼠标悬停在上面时 */a:hover{ background-color: #e31dff;}/* :active 被激活时 */a:active{ background-color: #22a200;}/* :focus 拥有焦点时 */input[type="text"]:focus{background-color: #93f879;}/* :checked 处于选中状态时 */input[type="checkbox"]:checked{width: 30px;height: 30px;}/* :disabled 处于禁用状态时 */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::placeholder

两个冒号代表伪元素,伪元素是对元素中的特定内容进行操作

<style>/* ::after 在选定元素的内容前插入内容 */#myDiv::before{content: "啦啦啦啦"; /* ::after ::before必须设置content属性,用来设置伪元素的内容,如果没有内容则引号留白即可 */color: #e10730;}/* ::before 在选定元素的内容后插入内容 */#myDiv::after{content: "嘻嘻嘻嘻";color: #0fa612;}/* ::selection 选定元素中被鼠标拖选中的文本样式 */p::selection{background-color: #dfff1e;}/* ::first-letter 选定元素的段落中首字母样式 */p::first-letter{font-size: 50px;font-weight: 700;}/* ::first-line 选定元素的第一行文本样式 */textarea::first-line{color: #e10730;text-decoration: line-through;}/* ::placeholder 选定元素的占位符文本的样式,通常用于 input 和 textarea 元素 */input::placeholder {text-align: center;color: red;}
</style>
<div id="myDiv"><span>文字</span><div>文字</div>
</div>
<p>可能产生即从次你说说对决是的上的点击菜单扫判搜索</p>
<textarea rows="5" cols="10">可能产生即从次你说说能产生即从次你说说对决是的上的点击菜单搜索</textarea>
<input type="text" placeholder="哈哈哈">

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

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

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

相关文章

echarts 自定义标注样式自定义tooltip弹窗样式

文章目录 1. 实现根据经纬度自定义标注图片样式2. 实现鼠标悬浮标注自定义弹窗样式内容 1. 实现根据经纬度自定义标注图片样式 设置 symbol 属性为 image://${require("/assets/img/dataView/point.png")} 图片地址即可&#xff0c;注意前面跟 image:// 特有的写法b…

【数一线性代数】007入门

Index 本文稍后补全&#xff0c;推荐阅读&#xff1a;https://blog.csdn.net/weixin_60702024/article/details/140939599分析实现总结 本文稍后补全&#xff0c;推荐阅读&#xff1a;https://blog.csdn.net/weixin_60702024/article/details/140939599 用两个栈来实现一个队列…

Redis学习以及SpringBoot集成使用Redis

目录 一、Redis概述 二、Linux下使用Docker安装Redis 三、SpringBoot集成使用Redis 3.1 添加redis依赖 3.2 配置连接redis 3.3 实现序列化 3.4 注入RedisTemplate 3.5 测试 四、Redis数据结构 一、Redis概述 什么是redis&#xff1f; redis 是一个高性能的&#xf…

数据库恢复技术详解【从基础冗余数据到故障恢复的全过程】

在数据库系统中&#xff0c;数据的安全性和一致性至关重要。无论是面对事务故障、系统故障还是介质故障&#xff0c;数据库都需要具备强大的恢复机制来应对这些潜在风险。本文将带领大家详细了解数据库恢复的实现技术&#xff0c;重点介绍如何利用冗余数据、转储和日志文件来实…

Cpp快速入门语法(下)(2)

文章目录 前言一、函数重载概念与使用C为何支持函数重载&#xff1f; 二、引用概念语法特性权限(常引用)使用场景与指针的区别 三、内联函数四、auto关键字(C11)五、基于范围的for循环(C11)六、指针空值nullptr(C11)总结 前言 承前启后&#xff0c;正文开始&#xff01; 一、函…

【BFS专题】— 解决拓扑排序问题

拓扑排序介绍&#xff1a; 1、课程表 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 通过Map<Integer, List<Integer>> 来创建邻接图&#xff0c;数组来表示入度然后遍历课程数组&#xff0c;建图然后再拓扑排序&#xff0c;bfs最后在遍历入度数组&…

14届蓝桥杯嵌入式国赛

目录 前言&#xff1a; 1.使用CUbeMX进行基础初始化配置 &#xff08;1&#xff09;选则芯片与基本初始化 &#xff08;2&#xff09;LED配置 &#xff08;3&#xff09;按键配置 &#xff08;4&#xff09;定时器和PWM以及频率 &#xff08;5&#xff09;ADC电压检测 …

计算机网络 --- 初识协议

序言 上一篇文章中 &#xff08;&#x1f449;点击查看&#xff09;&#xff0c;我们简单的了解了怎么寻找目标计算机&#xff0c;需要通过交换机&#xff0c;路由器等设备跨越多个网络来不断的转发我们需要传输的数据&#xff0c;直至到达目标计算机。  那我们设备之间数据是…

JMeter 中使用 Gson 操作请求中的Boby参数

背景 使用org.json.JSONObject 转换&#xff0c;与原Body参数顺序发生变化&#xff0c;原因&#xff1a;JSONObject内部是用Hashmap来存储的&#xff0c;本质上是一个无序的键值对集合&#xff0c;不应依赖字段的添加顺序。 为解决org.json.JSONObject 输出顺序问题&#xff…

鸿蒙读书笔记2:《鸿蒙操作系统设计原理与架构》

2. OS基础平台部件化 &#xff08;1&#xff09;内核层 内核层包括内核部件和HDF驱动框架部件。当前已提供LiteOS-M、 LiteOS-A、Linux和UniProton这4种内核部件&#xff0c;未来还可增加更多类 型的内核部件。LiteOS、Linux内核部件可以按需部署在不同设备之 上&#xff0c;内…

echarts X轴文本太长 formatter自定义文本的显示方式

如果ECharts中X轴的文本太长&#xff0c;可以通过设置axisLabel的rotate属性来旋转标签&#xff0c;或者使用formatter函数来自定义文本的显示方式。另外&#xff0c;可以开启axisLabel的interval属性来控制显示的标签的间隔。 option {tooltip: {},xAxis: {type: category,d…

p14 使用阿里云服务器的docker部署NGINX

拉取NGINX的镜像 这里因为之前已经配置过从阿里云的镜像仓库里面拿镜像所以这里直接就执行docker pull nginx拉取NGINX镜像就OK了 运行NGINX镜像 这里执行docker run -d --name nginx01 -p 3344:80 nginx这里3344是服务器访问的端口80是容器内部的端口&#xff0c;可以看到…

【C++ Primer Plus习题】16.5

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <list> using namespace…

硬件工程师笔试面试——集成电路

目录 17、集成电路 17.1 基础 集成电路实物图 17.1.1 概念 17.1.2 集成电路的发展历程 17.1.3 集成电路的分类 17.1.4 集成电路的制造工艺 17.1.5 集成电路的应用 17.2 相关问题 17.2.1 集成电路的制造工艺中,光刻技术是如何实现的? 17.2.2 在集成电路设计中,如何…

微信电脑版聊天图片DAT格式文件转为普通JPG图片

1-7 本文章主要教你如何恢复微信聊天中的聊天图片&#xff0c;主要应用场景是&#xff0c;当你的微信被封号了&#xff0c;或者无法登录了&#xff0c;会导致微信聊天中的聊天图片没办法再打开&#xff0c;如果是重要的图片&#xff0c;那就有损失了&#xff0c;所以有了本文的…

【无人机设计与控制】四旋翼无人机轨迹跟踪及避障Matlab代码

摘要 本文主要研究了四旋翼无人机在复杂环境中的轨迹跟踪与避障控制策略。通过Matlab/Simulink对四旋翼无人机进行了建模与仿真。系统集成了避障算法&#xff0c;使得无人机在执行任务时能够有效避开障碍物&#xff0c;保证飞行的安全性与稳定性。 理论 无人机飞行控制通常涉…

leetcode-枚举算法

1.两数之和 题目一&#xff1a;两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素…

Java项目实战II基于Spring Boot的宠物商城网站设计与实现

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网…

6--SpringBootWeb案例(详解)

目录 环境搭建 部门管理 查询部门 接口文档 代码 删除部门 接口文档 代码 新增部门 接口文档 代码 已有前端&#xff0c;根据接口文档完成后端功能的开发 成品如下&#xff1a; 环境搭建 1. 准备数据库表 (dept 、 emp) -- 部门管理 create table dept( id int un…