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);

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

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

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

相关文章

3D翻页电子画册制作零基础制作

随着科技的不断发展&#xff0c;3D翻页电子画册逐渐成为了一种流行的展示方式。它不仅具有丰富的视觉冲击力&#xff0c;还能带来更好的用户体验。如果你是零基础&#xff0c;不用担心&#xff0c;我将为你详细介绍如何制作3D翻页电子画册。让你轻松入门&#xff0c;创作出属于…

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

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

【qt】QString字符串

前言&#xff1a; 这节很轻松&#xff0c;大家可以放心食用 ♪(&#xff65;ω&#xff65;)&#xff89; QString目录 一.与cString的区别二.隐式共享三.初始化四.判断是否为空串五.字符串的长度六.添加字符串1.尾加2.任意位置加 七.替换字符串八.修改字符串九.删除字符串1.清…

Elastic 基于 RAG 的 AI 助手:利用 LLM 和私有 GitHub 问题分析应用程序问题

作者&#xff1a;来自 Elastic Bahubali Shetti 作为 SRE&#xff0c;分析应用程序比以往更加复杂。 你不仅必须确保应用程序以最佳状态运行以确保良好的客户体验&#xff0c;而且还必须了解某些情况下的内部工作原理以帮助排除故障。 分析基于生产的服务中的问题是一项团队运动…

EOCR-DS3T-05S电动机保护器 施耐德 EOCR-DS3系列

EOCR-DS3T-05S电动机保护器 施耐德 EOCR-DS3系列型号&#xff1a; EOCR-DS3-05S EOCR-DS3-30S EOCR-DS3-60S EOCR-DS3T-05S EOCR-DS3T-30S EOCR-DS3T-60S 基于MCU&#xff08;微处理器&#xff09;的2CT型产品 ■ 实时处理/高精度 ■ 电流设定范围&#xff1a;05型&#xff1…

【SpringBoot整合系列】SpringBoot整合Thymeleaf

目录 背景Thymeleaf简介Thymeleaf的特征模板引擎是什么 代码示例1.引入依赖2.修改配置文件&#xff0c;添加Thymeleaf的配置信息3.编写HTML模板文件4.编写控制器&#xff0c;返回ModelAndView&#xff0c;进行视图渲染 Thymeleaf语法1.常用标签/属性1.1 th:action1.2 th:method…

SpringBoot 使用Outlook邮箱发送邮件

目录 一、开启Outlook设置 二、依赖 三、配置文件 四、代码调用 一、开启Outlook设置 开启设置如图&#xff1a; 二、依赖 <!-- 邮箱依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mai…

Java -- (part25)

一.Junit单元测试 1.概述 是一个单元测试框架,可以代替main方法去执行其他的方法 2.使用 a.导入jar包 b.注解 Test:单独执行一个方法 Before:在Test之前执行,有几个Test就有几个Before After:在Test之后执行,有几个Test就有几个After 二.类的加载机制 1.类的加载时机…

七款好用的上网行为管理软件推荐 |有没有好用的上网行为管理系统

七款好用的上网行为管理软件推荐 |有没有好用的上网行为管理系统 员工上班刷视频&#xff01; 员工上班炒股&#xff01; 员工上班干副业&#xff01; 碰见这种情况怎么办&#xff1f;当然是用电脑监控软件来监视员工的一举一动了&#xff0c;那么这样的软件有哪些呢&#…

充电桩测试:选择适合的负载箱

随着电动汽车的普及&#xff0c;充电桩的需求也在不断增加。为了保证充电桩的性能和安全&#xff0c;对其进行测试是非常重要的。在充电桩测试过程中&#xff0c;选择合适的负载箱是关键。本文将介绍如何选择合适的负载箱进行充电桩测试。 在进行充电桩测试之前&#xff0c;首先…

思腾合力受邀参加VALSE 2024视觉与学习青年学者研讨会

在充满学术氛围的五月&#xff0c;思腾合力荣幸受邀参加了于2024年5月5-7日在重庆举行的第十四届VALSE大会。作为视觉与学习领域的顶级交流平台&#xff0c;VALSE大会每年都吸引着全国专家与学者的目光。 本次大会不仅延续了往届的高水平学术研讨&#xff0c;还进一步拓宽了研究…

【CTF-Crypto】RSA-选择明密文攻击 一文通

RSA&#xff1a;选择明密文攻击 关于选择明/密文攻击&#xff0c;其实这一般是打一套组合拳的&#xff0c;在网上找到了利用的思路&#xff0c;感觉下面这个题目是真正将这个问题实现了&#xff0c;所以还是非常棒的一道题&#xff0c;下面先了解一下该知识点&#xff1a;(来自…

【可实战】被测需求理解(需求文档是啥样的、从哪些角度进行需求评审、需求分析需要分析出哪些内容、如何提高需求分析能力)

产品人员会产出一个需求文档&#xff0c;然后组织一个需求的宣讲。测试人员的任务就是在需求宣讲当中&#xff0c;分析需求有没有存在一些问题&#xff0c;然后在需求宣讲结束之后通过分析需求文档&#xff0c;分析里面的测试点并预估一个排期。 一、需求文档是什么样的&#x…

SmartEDA电路仿真软件风靡教育圈:揭秘其背后的魅力所在

在当今的电子信息时代&#xff0c;随着科技的飞速发展&#xff0c;电路设计与仿真软件在教育领域的应用越来越广泛。特别是SmartEDA这款电路仿真软件&#xff0c;以其强大的功能和直观易用的操作界面&#xff0c;赢得了众多教师的青睐。那么&#xff0c;究竟是什么原因让SmartE…

给汉字注音可以主要拼音不要声调吗?这两个注音小技巧你一定会需要

一&#xff0c;前言 在中文学习中&#xff0c;拼音是一种非常重要的工具&#xff0c;它帮助学习者正确地发音和理解汉字。然而&#xff0c;在拼音的使用中&#xff0c;一个常见的问题是是否应该包含声调。有些人认为&#xff0c;只要拼音中有声母和韵母&#xff0c;就可以准确…

如何使用client-go构建pod web shell

代码示例及原理 原理是利用websocket协议实现对pod的exec登录&#xff0c;利用client-go构造与远程apiserver的长连接&#xff0c;将对pod容器的输入和pod容器的输出重定向到我们的io方法中&#xff0c;从而实现浏览器端的虚拟终端的效果消息体结构如下 type Connection stru…

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日&#xff0c;一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌&#xff0c;苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前&#xff0c;苏州金龙海格客车在塞尔维亚保有量近200台&#xff0c;是在塞尔维亚保有量最大的中国客车…

鸿蒙OpenHarmony开发板【快速入门】大合集

快速入门 快速入门概述 基于IDE入门 搭建开发环境 搭建Windows环境搭建Ubuntu环境配置远程访问环境创建工程并获取源码 轻量系统&#xff08;基于Hi3861开发板&#xff09; 编写“Hello World”程序编译烧录运行 小型系统&#xff08;基于Hi3516开发板&#xff09; 编写“Hell…

上海计算机学会2023年8月月赛C++丙组T2下降幂多项式

题目描述 x 的 k 次下降幂定义为 x 的下降幂多项式是由 x 的一组下降幂及系数组成的算式&#xff1a; 给定下降幂多项式 f(x) 的系数 an​,an−1​,⋯,a0​ 与一个值 m&#xff0c;请计算f(m)mod1,000,000,007。 输入格式 第一行&#xff1a;两个整数 n 与 m第二行&#xff…

数据库加密数据模糊匹配查询技术方案

文章目录 前言沙雕方案内存加载解密密文映射表 常规做法实现数据库加密算法参考 分词组合加密&#xff08;推荐&#xff09; 超神方案总结个人简介 前言 在数据安全性和查询效率之间找到平衡是许多数据管理系统所面临的挑战之一。特别是在涉及加密数据的情况下&#xff0c;如何…