【从零开始学CSS | 第二篇】伪类选择器

news2025/1/11 2:23:11

目录

前言:

伪类选择器:

 常见的伪类选择器:

举例:

小窍门:

总结:


前言:

        上一篇文章我们详细的为大家介绍了一些常见的选择器,这几篇我们将再次介绍CSS中的一个常见选择器——伪类选择器,他的种类繁多,希望各位可以对它有一个比较好的掌握程度。

伪类选择器:

        伪类选择器是CSS中一种用于选择元素的特殊方式,通过在选择器后面使用冒号(:)和伪类名称的方式来指定。伪类选择器可以选择具有特定状态或条件的元素,而不仅仅是基于标签名或类名等静态的属性选择。

        伪类选择器可以与其他选择器结合使用,用于更精确地选择和应用样式到文档中的不同元素。

TIPS:
        伪类不是类,他只是元素的一种特殊状态,伪类是CSS中强大而灵活的工具,它们使得我们可以根据元素的不同状态和位置来设计更具交互性和动态性的样式。

 常见的伪类选择器:

1.:hover(悬停状态)
   当鼠标悬停在元素上时,可以为元素定义特定的样式。例如,当鼠标悬停在链接上时,可以改变链接的颜色或背景色:

   a:hover {
     color: red;
     background-color: yellow;
   }
 

2. :active(激活状态):
   当元素被激活(例如被点击)时,可以应用特定的样式。通常在按钮或链接上使用该伪类来给用户提供点击反馈:

 button:active {
     background-color: green;
     color: white;
   }
   

3. :focus(焦点状态):
   当元素获得焦点时,可以应用特定的样式。主要用于表单元素,以便在用户输入时突出显示当前焦点的元素:

   input:focus {
     border: 2px solid blue;
   }
   

4. :visited(已访问链接):
   选择已经访问过的链接,并为其设置特定的样式。这通常用于改变已访问链接的颜色,以便用户可以区分哪些链接已经点击过:

   a:visited {
     color: purple;
   }
   

5. :first-child(第一个子元素):
   选择父元素的第一个子元素,并为其设置样式。这可以用于选择列表中的第一个元素或其他需要突出显示第一个子元素的情况 :

   li:first-child {
     font-weight: bold;
   }
  

6. :last-child(最后一个子元素):
   选择父元素的最后一个子元素,并为其设置样式。这可以用于选择列表中的最后一个元素或其他需要突出显示最后一个子元素的情况:

 li:last-child {
     margin-bottom: 0;
   }
   

7. :nth-child(n)(第n个子元素):
   选择父元素中特定位置的子元素,并为其设置样式。可以使用这个伪类选择器根据子元素的位置来应用样式,其中n是一个表示位置的数值:

    p:nth-child(2) {
     color: blue;
   }
   

上述示例将选择父元素中的第二个`<p>`元素并将其文本颜色设置为蓝色。

举例:

      例如我们建立一个a标签,我们都知道如果a标签访问后就会变为紫色,未访问的时候是蓝色,此时如果我们想要a标签未访问的时候是红色访问了就是正常的紫色。我们之前学的知识就无法办到!

<!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{
            color: red;
          }
        
  </style>
</head>
<body>

  <a href="https://www.bilibili.com/" target="_blank">去哔哩哔哩</a>
</body>
</html>

结果:

我们发现我们有没有对这个链接进行访问,”去哔哩哔哩“这个文本不管是否访问过始终都是红色,并不能够达到我们之前想要的结果,因此我们引入了伪类选择器这个概念,使用伪类选择器来选择具有特定状态或条件的元素。

正确写法:

<!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 */
          a:link{
            color: red;
          }
        
  </style>
</head>
<body>

  <a href="https://www.bilibili.com/" target="_blank">去哔哩哔哩</a>
</body>
</html>

访问前:

访问后:

小窍门:

        当我们伪类选择器对a标签进行修饰的时候,我们一般都有固定的顺序,分别是link->visited->hover->active

这是因为这个顺序可以确保样式规则被正确地应用。

  • :link 伪类选择器应用于未被访问过的链接,它指定了默认状态下的链接样式。这个伪类通常放在第一个,是因为它是最基本的状态,应该首先定义默认样式。
  • :visited 伪类选择器应用于已被访问过的链接,它指定了访问后链接的样式。它紧随`:link`之后,因为这两个伪类选择器是针对同一个元素的不同状态。
  • :hover 伪类选择器应用于当鼠标悬停在链接上时的状态,它指定了鼠标悬停时链接的样式。它排在前面是因为悬停状态有时是用户与链接进行交互的重要状态。
  • :active 伪类选择器应用于当链接被激活(例如鼠标按下或按键按下时)时的状态,它指定了被激活时链接的样式。它通常排在最后,因为它代表的是链接的瞬时状态,用户交互完成后不再保留。

        按照这个顺序编写样式规则,可以确保链接的样式按照预期的方式应用。此外,这个顺序也符合一般的使用习惯和开发者约定,有助于代码的可读性和维护性。

        如果不按照这个顺序来对a标签进行状态修饰,可能会导致有些修饰无法正常出现。

例如:

        我们想要a标签鼠标悬停的时候是红色,鼠标点击的时候是绿色,就应该严格遵守这个顺序:将hover  排在  active前面:

          a:hover{
            color: red;
          }
          
          a:active{
            color: darkgreen;
          }
          

如果颠倒顺序的话, 则当标签处于激活状态的时候,并不会显示绿色。

需要注意的是,并不是所有的伪类选择器都必须按照这个顺序进行排列。这个顺序更适用于`a`标签的伪类选择器,针对其他元素的伪类选择器可能有不同的顺序约定。

总结:

本章节我们详细的介绍了伪类选择器,它使我们能够特定的对标签的不同状态进行修饰,是一个很实用的选择器,但同时它的种类也很繁多,因此我们要多加记忆。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

 

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

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

相关文章

flutter开发实战-css的linear-gradient的值转换成LinearGradient

flutter开发实战-css的linear-gradient的值转换成LinearGradient 在开发中遇到了参照前端的css的属性值&#xff0c;需要将css的linear-gradient值转换成LinearGradient&#xff0c;这样可以直接设置相应的值。这里暂时不涉及到&#xff0c;颜色值名称、color-stop1&#xff0…

第6章 NVMe 介绍 6.1-6.3

6.1 AHCI 到 NVMe AHCI协议。NVMe协议。 HDD 和早期的 SSD 绝大多数都是使用SATA接口&#xff0c;跑的是AHCI&#xff0c;它是一种系统接口标准。 后来&#xff0c;AHCI 和 SATA 不能满足高性能和低时延 SSD 的需求&#xff0c;SSD 需要更快、更高效的协议和接口。因此 NVMe 出…

webug4.0靶场通关笔记

文章目录 注入显错注入布尔注入延时注入post注入过滤注入宽字节注入xxe注入csv注入万能密码登陆 XSS反射型xss存储型xssDOM型xss过滤xss链接注入 任意文件下载任意文件下载mysql配置文件下载 上传漏洞文件上传(前端拦截)文件上传(解析漏洞)文件上传(畸形文件)文件上传(截断上传…

layui中laydate日期组件闪动打不开问题解决

在laydate.render里配置trigger:click’就可以了&#xff08;已解决&#xff09;

路径规划算法:基于人工蜂鸟优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于人工蜂鸟优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于人工蜂鸟优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Leetcode-每日一题【83.删除排序链表中的重复元素】

题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2]输出&#xff1a;[1,2] 示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3]输出&#x…

Docker 安装与基本使用

一、简介 Docker 官方文档、Docker 中文文档&#xff0c;更新会落后于官方文档 什么是 Docker ? Docker 是一个应用打包、分发、部署的工具&#xff0c;也可以把它理解为一个轻量的虚拟机&#xff0c;它只虚拟软件需要的运行环境&#xff0c;多余的一点都不要&#xff0c;而普…

jinkens编译问题

可以看到是NapaMedia 编译有问题 往上面查看 再在gerrit上看提交的这个文件。。打开看下是不是有冲突 果然有冲突 有冲突在gerrit上直接解决冲突 然后保存 updatechanges再publish edit 然后点进编译

Gym - 101652

A - Odd Palindrome 题意&#xff1a;给你一个字符串如果它的所有回文子串长度为奇数&#xff0c;输出Odd.否则输出Or not. 思路&#xff1a;其实只要判断是否有两个相连的字符就可以了 #include <bits/stdc.h> using namespace std; #define pi 3.1415926 #define X f…

STM32初识---概念了解(下)

复位和时钟控制&#xff08;RCC) 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a; 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 电源复位 当以下事件中…

XML文档详解

目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 XML文档 一、XML文件 1.1 学习重…

s3fs安装使用

s3fs安装使用 前言 最近在预研将对象存储桶挂载到本地文件系统的需求&#xff0c;查阅了一些相关的资料&#xff0c;找到s3fs-fuse开源组件&#xff0c;可以满足需求&#xff0c;本文主要记录一下s3fs的部署以及使用。 s3fs简介 s3fs 是一个 C 开发的开源工具&#xff0c;可…

Amplify-Shader-Pack下载

ASE相关效果资源https://download.csdn.net/download/mayzhengxi/87915649?spm1001.2014.3001.5503

[linux] ebtables技术

Linux系统中使用ebtables技术 ebtables就是以太网桥防火墙&#xff0c;以太网桥工作在数据链路层&#xff08;MAC层&#xff09;&#xff0c;ebtables主要过滤数据链路层数据包&#xff0c;ebtables能过滤桥接流量。ebtables每个阶段的过滤时机都比iptables早。 ebtables的配置…

centos7.9修改ssh默认的端口号

多开几个ssh&#xff0c;防止配置文件错误&#xff0c;将自己关在服务器外面了 netstat -ntlp|grep ssh # ssh对应的端口号 修改sshd_config配置文件 /etc/ssh/sshd_config&#xff0c;重启sshd服务 #Port 22 Port 10011 # 端口号自己定义&#xff0c;不能超过65535&#xf…

基于Java+Swing+Mysql影院购票系统

基于JavaSwingMysql影院购票系统 一、系统介绍二、功能展示1.用户登陆2.用户订票管理3.电影售票中心4.电影上映管理4.退票记录查询 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看管理员登陆、用户订票管理、电影上映管理、电影售票中心、退票记录查询…

重定义/自定义printf到串口输出实现的三种方法(cubeide)

重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide) 文章目录 重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide)1.重写_write函数2.重定义PUTCHAR_PROTOTYPE宏3.va_list自定义printf总结&#xff1a; 1.重写_write函数 注释掉syscalls.c文件中…

Java中Map使用增强for循环和迭代器获取key和value

加油&#xff0c;新时代打工人&#xff01; java中List集合三种获取集合元素方式 本文运行代码使用 jdk1.8 for 语句比较简单&#xff0c;用于循环数据。 Java迭代器&#xff08;Iterator&#xff09;是 Java 集合框架中的一种机制&#xff0c;是一种用于遍历集合&#xff08…

非线程安全问题

目录 实例变量共享导致的“非线程安全问题” 如何解决这个问题&#xff1f; i--与System.out.println()出现引起的“非线程安全问题” 非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况&#xff0c;进而影响程序的执行流…

科目一速通技巧笔记,简记

常规 累计积分制度&#xff08;12满&#xff09;周期12月 虚假材料1年&#xff0c;假1吊二撤三醉五逃终身 假1500 骗三2k以下 初次领证1年实习期、实习标志&#xff0c;18~70岁 拼装车、报废车&#xff0c;吊销 200~2k 没有中心线&#xff08;一条路&#xff09;城市道路3…