CSS伪类选择器

目录

前言:

链接伪类:

用户行为伪类:

元素状态伪类:

结构化伪类:

否定伪类:

目标伪类:

输入伪类:


前言:

        在CSS中有一种特殊的选择器:伪类选择器,可以使用伪类设置元素的动态状态,比如点击,或者鼠标在元素上方,或者是让其他选择器不能选择这些元素(没有ID或者class).伪类的名称不区分大小写,但使用时需要用:冒号开头初识CSS-CSDN博客 0基础看这一篇就够了HTML教程(详细汇总)-CSDN博客

除此之外伪类还需要跟CSS中的选择器结合一起使用,其语法为:

selector:pseudo-class{property:value;
}

上述示例中:selector是选择器的名称,pseudo-class是伪类的名称。

        在CSS中提供了多种多样的伪类选择器,让我们可以根据元素的特定状态或属性来选择和样式化元素。以下是一些常见的CSS伪类以及它们的使用:

链接伪类

  • :link:选择所有未被访问的链接。
  • :visited:选择用户已访问的链接。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 未访问的链接 */a:link {color: rgb(255, 179, 0);}/* 访问过的链接 */a:visited {color: rgb(11, 128, 0);}</style>
</head><body><a href="https://www.bilibili.com/" target="_blank">点击此链接跳转到B站</a>
</body></html>

         上述代码:如果没有访问过<a>标签那么此时链接的为color: rgb(255, 179, 0);类似橘黄色,如果点击了链接访问后就会变成color: rgb(11, 128, 0);类似绿色,如果你一运行html就是访问过的样式可能是因为历史记录中访问过。

用户行为伪类

  • :hover:当用户将鼠标指针悬停在元素上时选择该元素。
  • :active:当用户与元素交互(如点击一个链接或按钮)时选择该元素。
  • :focus:选择获得焦点的元素,例如输入框。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>button {width: 50px;height: 30px;}/* 鼠标悬停时改变按钮背景色 */button:hover {background-color: rgb(21, 194, 64);}/* 点击按钮时改变其颜色 */button:active {color: rgb(224, 38, 38);}/* 输入框获取焦点时改变边框颜色 */button:focus {border-color: rgb(18, 197, 39);border: 5px solid red;}</style>
</head><body><button>2</button><button>1</button><button>63</button>
</body></html>

         代码运行示例如下:其中第一个为正常的样式,第二个被点击过之后边框颜色变为了border-color: rgb(18, 197, 39); 其中第三个鼠标正在其上方然后其颜色变为了 border-color: rgb(18, 197, 39);

 

元素状态伪类

  • :enabled:选择所有启用的表单元素。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 样式化所有启用的表单元素 */input:enabled {background-color: lightgreen;}</style>
    </head><body><input type="text" placeholder="启用的输入框"><input type="text" placeholder="启用的输入框" disabled>
    </body></html>
  • :disabled:选择所有禁用的表单元素。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 样式化所有禁用的表单元素 */input:disabled {background-color: lightgray;}</style>
    </head><body><input type="text" placeholder="禁用的输入框" disabled><input type="text" placeholder="启用的输入框">
    </body></html>
  • :checked:选择被选中的表单元素,如单选按钮或复选框。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 样式化被选中的表单元素 */input:checked+label {color: red;text-decoration: underline;}</style>
    </head><body><input type="radio" id="option1" name="option" checked><label for="option1">选项 1 (选中)</label><br><input type="radio" id="option2" name="option"><label for="option2">选项 2</label><br>
    </body></html>

结构化伪类

  • :first-child:选择其父元素的第一个子元素。
  • :last-child:选择其父元素的最后一个子元素。
  • :nth-child(n):选择其父元素的第n个子元素。
  • :nth-last-child(n):选择其父元素的倒数第n个子元素。
  • :only-child:如果元素是其父元素的唯一子元素,则选择该元素。
  • :first-of-type:选择一组兄弟元素中其类型的第一个元素。
  • :last-of-type:选择一组兄弟元素中其类型的最后一个元素。
  • :nth-of-type(n):选择一组兄弟元素中其类型的第n个元素。
  • :nth-last-of-type(n):选择一组兄弟元素中其类型的倒数第n个元素。
  • :only-of-type:如果元素是其父元素中唯一具有该类型的子元素,则选择该元素。

部分示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>li:first-child {color: red;font-weight: 900;font-size: large;}li:last-child {color: aqua;font-size: larger;font-weight: 100;}p:only-child,a:only-child {background-color: bisque;}li:nth-child(3) {color: blueviolet;}p:only-of-type {background-color: rgb(35, 194, 38);}li:last-of-type {background-color: rgb(238, 191, 63);}</style>
</head><body><ul><li>第一个元素</li><li>第二个元素</li><li>第三个元素</li><li>第四个元素</li><li>第五个元素</li><li>第六个元素</li><li>第七个元素</li><p>啥也没得个</p></ul><p><a href="">这里啥都没得没有连接</a></p><p>最后一个元素</p>
</body></html>

         上述代码的运行结果如:其ul中第一个li元素被li:first-child类伪类选择器选中,ul中的第三个元素使用了li:nth-child(3)其中指定了第三个所以被选中了,最后一个元素根据文档流所以被li:last-of-type选中,而其中ul中唯一的p标签被p;only-of-type选中因为p标签是ul标签中唯一的p,而倒数第二行的a因为其是它父元素中唯一的元素所以被选中了。

否定伪类

  • :not(selector):选择不符合指定选择器的所有元素。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 选择除了.excluded-class之外的所有p元素 */p:not(.excluded-class) {color: blue;}</style>
</head><body><p>这段文字将会是蓝色。</p><p class="excluded-class">这段文字将不会被样式化,因为它有.excluded-class。</p>
</body></html>

        上述代码中的第一个p变为了蓝色而class属性为excluded-class则没有因为使用的是not伪类选择器所以被去除掉了。

目标伪类

  • :target:选择当前活动的目标元素(例如,URL中带有片段标识符的元素)。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Target Pseudo-class Example</title><style>/* 通用样式 */body {font-family: Arial, sans-serif;margin: 0;padding: 20px;}h2 {color: #333;}p {margin-bottom: 20px;}/* 目标伪类样式 */:target {background-color: lightyellow;padding: 10px;border: 1px solid #ccc;}</style>
</head><body><h1>Welcome to the Target Pseudo-class Example Page</h1><h2 id="section1">Section 1</h2><p>This is the content for section 1.</p><p>Scroll down to see more sections or use the links below to navigate.</p><h2 id="section2">Section 2</h2><p>This is the content for section 2.</p><h2 id="section3">Section 3</h2><p>This is the content for section 3.</p><!-- 页脚导航 --><footer style="position: fixed; bottom: 0; left: 0; width: 100%; background: #f5f5f5; padding: 10px;"><nav><ul><li><a href="#section1">Go to Section 1</a></li><li><a href="#section2">Go to Section 2</a></li><li><a href="#section3">Go to Section 3</a></li></ul></nav></footer>
</body></html>

         每个链接都与上面的h2标签一一相连点击链接之后相关的h2标签的背景也会随之改变。

输入伪类

  • :valid:选择所有有效的输入元素。
  • :invalid:选择所有无效的输入元素。
  • :required:选择设置有"required"属性的元素。
  • :optional:选择没有"required"属性的元素。
  • :in-range:选择值在指定范围内的元素。
  • :out-of-range:选择值不在指定范围内的元素。
  • :read-only:选择只读的输入元素。
  • :read-write:选择非只读的输入元素。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>input[type="email"]:valid {border: 2px solid green;}input[type="number"]:out-of-range {border: 2px solid red;/* 当输入值超出范围时,输入框边框变为红色 */}input:optional {background-color: aquamarine;}input:read-only {color: rgb(18, 101, 224);}</style>
</head><body><form><label for="email">Email:</label><input type="email" id="email" required><input type="submit" value="Submit"></form><form><label for="numberInput">请输入一个1到100之间的数字:</label><input type="number" id="numberInput" name="numberInput" min="1" max="100" required><input type="submit" value="提交"></form><form><label for="numberInput">请输入一个1到100之间的数字:</label><input type="number" id="numberInput" name="numberInput" min="1" max="100" required><input type="submit" value="提交"></form>
</body></html>

         第一个input输入框被选中了因为其输入的值是一个有效值(有效QQ号),第二个输入框被选中了是因为其输入了一个无效值,最后一个输入框没有被选中,其次又设置了input:optional让后续的input提交按钮被选中背景变为aquamarine,后续又选择了只读的input元素将其元素的字体设置为color: rgb(18, 101, 224);

        这些伪类提供了强大的选择能力,使我们能够精确地控制和样式化页面上的元素,基于它们的状态、位置、属性或其他条件。

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

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

相关文章

深入分析网络智能摄像头的RTSP协议安全风险

本文为转载&#xff0c;原作者&#xff1a;山石网科安全技术研究院 网络摄像头作为现代安防体系的关键组成部分&#xff0c;已经广泛应用于各类场所&#xff0c;包括交通枢纽、教育机构、企业办公区、零售商场等公共和私人领域。它们主要负责提供实时视频监控&#xff0c;以加…

自己的服务器部署了Excalidraw,你确定不试试?

Excalidraw是一款开源的虚拟手绘风格白板工具&#xff0c;专为快速创作草图、流程图、示意图等设计。它的特色在于提供了一种类似手绘的视觉效果&#xff0c;使得制作的图表看起来更加自然和非正式&#xff0c;适合创意讨论、头脑风暴以及远程协作场景。Excalidraw强调易用性和…

93、动态规划-最长回文子串

思路 首先从暴力递归开始&#xff0c;回文首尾指针相向运动肯定想等。就是回文&#xff0c;代码如下&#xff1a; public String longestPalindrome(String s) {if (s null || s.length() 0) {return "";}return longestPalindromeHelper(s, 0, s.length() - 1);…

量化教程3---miniqmt当作第三方库设置,提供源代码

qmt提供了大qmt和miniqmt&#xff0c;大qmt在平台使用&#xff0c;miniqmt提供了交易的api和数据可以本地使用&#xff0c;非常的方便&#xff0c;合适自己开发大型的策略&#xff0c;本地还可以访问其他数据&#xff0c;网络等&#xff0c;也支持服务器 以前的教程 qmt教程1…

内网安全【2】——域防火墙/入站出站规则/不出网隧道上线/组策略对象同步

-隧道技术&#xff1a;解决不出网协议上线的问题(利用出网协议进行封装出网)&#xff08;网络里面有网络防护&#xff0c;防火墙设置让你不能正常访问网络 但有些又能正常访问&#xff0c;利用不同的协议tcp udp 以及连接的方向&#xff1a;正向、反向&#xff09; -代理技术&…

uni-app 多列picker切换列显示对应内容

html部分&#xff1a; <view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">选择用户</view><view class"uni-list-cell-db"><picker mode"multiSelector"…

【密评】 | 商用密码应用安全性评估从业人员考核题库(5/58)

我国金融信息系统、第二代居民身份证管理系统、国家电力信息系统、社会保障信息系统、全国中小学学籍管理系统中&#xff0c;都应用&#xff08;&#xff09;技术构建了密码保障体系。 A. 核心密码 B. 普通密码 C. 商用密码 D. 核心密码和普通密码 商用密码从业单位开展商用密…

【VUE】el-descriptions 描述列表

Descriptions 描述列表 列表形式展示多个字段。 <el-descriptions title"用户信息"><el-descriptions-item label"用户名">kooriookami</el-descriptions-item><el-descriptions-item label"手机号">18100000000</e…

学习3:scrapy请求对象、模拟登录、POST请求、管道的使用、crawlspider爬虫类

请求对象 请求对象参数 scrapy.Request(url[],callback,method"GET",headers,body,cookies,meta,dont_filterFalse)callback 表示当前的url响应交给那个函数去处理method 指定请求方式headers 接受一个字典&#xff0c;其中不包括cookiesbody 接收json字符串&#…

uniapp读取项目本地文件/json文件/txt文件

uniapp读取项目本地文件/json文件/txt文件 文件必须放在static目录下 方法&#xff1a; /*** 访问static里面的文件* param url 文件路径 必须在static目录下*/ function localFetch(url) {return new Promise((resolve, reject) > {plus.io.resolveLocalFileSystemURL(_ww…

阿里云VOD视频点播流程(2)

二、视频点播 1、入门代码 基于OSS原生SDK上传 &#xff0c;参考文档&#xff1a;https://help.aliyun.com/zh/vod/user-guide/upload-media-files-by-using-oss-sdks?spma2c4g.11186623.0.0.1f02273fj4lxNJ 视频点播面向开发者提供了丰富的上传方式&#xff0c;其中上传SDK&…

从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习

jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…

DUX 主题 版本:8.2 WordPress主题优化版

主题下载地址&#xff1a;DUX 主题优化版.zip 支持夜间模式、快讯、专题、百度收录、人机验证、多级分类筛选&#xff0c;适用于垂直站点、科技博客、个人站&#xff0c;扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、自动缩略图

添砖Java之路其三——自增自减运算符,数据转换与原码反码补码。

目录 运算符&#xff1a; 转换&#xff1a; 隐式转换&#xff1a; 小范围数据可以直接可以给大范围数据&#xff1a; 这里做了一张图范围向下兼容表​编辑 运算时&#xff0c;数据范围小的和数据范围大的&#xff0c;需要讲运算范围小的提升为运算范围大的同类&#xff0c…

全球AI新闻速递

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

C/C++开发,opencv-features2d模块,SIFT等特征检测器应用

目录 一、OpenCV-features2d 模块简介 1.1 features2d 模块信息 1.2 features2d 模块应用流程 二、features2d 模块编码案例 2.1 实现逻辑 2.2 features2d 模块应用程序代码 2.3 程序编译及运行 一、OpenCV-features2d 模块简介 1.1 features2d 模块信息 features2d 是…

炒美股怎么开户?

近年来&#xff0c;随着国内投资者对境外投资需求的不断增长&#xff0c;炒美股逐渐成为许多投资者的选择。然而&#xff0c;随着监管政策的不断完善&#xff0c;传统的互联网券商开户方式已经不再适用。那么&#xff0c;对于想要入场美股市场的投资者来说&#xff0c;该如何开…

Angular中的路由

Angular中的路由 文章目录 Angular中的路由前言一、创建路由二、创建多个组件路由三、创建子路由四、创建多个组件子路由 前言 在Angular中&#xff0c;路由是用于在不同的视图和组件之间导航的机制。Angular提供了一种强大的路由机制来管理单页应用&#xff08;SPA&#xff0…

vue2项目升级到vue3经历分享4

后端重构&#xff0c;如果接口做好抽象封装&#xff0c;只需要考虑jar之间的兼容性问题&#xff0c;jdk版本不变&#xff0c;基本不用做太大的调整&#xff0c;但是前端就不一样&#xff0c;除了vue框架本身&#xff0c;css的调整&#xff0c;改起来更是让人头疼。前面写了vue2…

Android 开机启动扫描SD卡apk流程源码分析

在开机的时候&#xff0c;装在SD卡的apk和装在系统盘的apk扫描过程不一样&#xff0c;系统盘apk在系统启动过程中扫描&#xff0c;而SD卡上的就不是&#xff0c;等系统启动好了才挂载、扫描&#xff0c;下面就说下SD扫描的流程&#xff1a; 在SystemServer启动MountService&am…