当前位置: 首页 > news >正文

CSS - Pseudo-classes(伪类选择器)

目录

  • 一、介绍
  • 二、常用种类
  • 三、案例实现
    • 案例一:a标签使用link/visited/hover/active
    • 案例二:表单元素使用focus/disabled
    • 案例三、通过其余伪类实现元素灵活选中

一、介绍

CSS 伪类(Pseudo-classes) 用于定义元素的特定状态结构位置,从而允许你为这些特殊场景添加样式。伪类以冒号 : 开头,附加在选择器后

/* 举例 */
a:link{
   color: #fff;
    background-color: aqua;
}

二、常用种类

伪类含义
:link选中未访问的链接
:visited选中已访问的链接
:hover鼠标悬停在元素上时
:active元素被激活(如鼠标按下元素)时
:focus元素获得焦点(如表单输入框被选中)
:disabled禁用的表单元素
:checked被选中的复选框或单选按钮
:first-child元素的第一个子元素
:last-child元素的最后一个子元素
:first-of-type选中第一个指定类型的子元素
:last-of-type选中最后一个指定类型的子元素
:nth-child(n)选中第 n 个子元素(支持公式如 2n+1)
:nth-of-type(n)选中该类型元素的第 n 个

三、案例实现

案例一:a标签使用link/visited/hover/active

当我们同时使用多种选中样式的伪类时,生效的顺序十分重要!!!这里通过爱恨法则来加快记忆

爱恨法则 Love Hate -> link visited hover active

效果代码:hover和active需要鼠标移动至元素/鼠标按下激活元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>伪类</title>
    <style>
        .nav a{
            width: 100px;
            height: 50px;
            text-decoration: none;
            background-color: antiquewhite;
        }
        /*伪类顺序: 爱恨法则 Love Hate -> link visited hover active  */
        /* line 选中未访问过的超链接 */
        .nav a:link{
            color: #fff;
            background-color: aqua;
        }
        /* visited 选中访问过的超链接 */
        .nav a:visited{
            background-color: aquamarine;
        }
        /* hover 选中鼠标移入的元素 */
        .nav a:hover{
            background-color: azure;
        }
        /* active 选中鼠标按下的元素 */
        .nav a:active{
            color: #fff;
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="nav">
        <a href="https://gitee.com/">gitee</a>
        <a href="https://www.bilibili.com">哔哩哔哩</a>
        <a href="https://ys.mihoyo.com/">原神</a>
        <a href="https://chat.deepseek.com/">deepseek</a>
    </div>
</body>
</html>

效果
在这里插入图片描述

案例二:表单元素使用focus/disabled

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>伪类</title>
    <style>
        form input:focus{
            outline: 1px solid red;
        }
        form button:disabled{
            cursor: not-allowed;
        }
    </style>
</head>
<body>
    <form>
        <input type="text" placeholder="一步一步向上爬">
        <button disabled>成绩加一</button>
    </form>
</body>
</html>

focus:表单聚焦
disabled:表单元素禁用,这里改动的是鼠标样式
效果
在这里插入图片描述

案例三、通过其余伪类实现元素灵活选中

注意!!!:first-child 的匹配规则- - last-child同理

  • 严格检查位置:只有同时满足以下两个条件时才生效:
    • 元素是父容器第一个子元素
    • 元素类型与选择器指定的标签匹配

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>伪类</title>
    <style>
        p:first-child{
            color: red;
        }
    </style>
</head>
<body>
    <div> <!-- 父元素 -->
        <span>span:灵活的选择器</span> <!-- 第一个为span -->
        <div> <!-- 父元素 -->
            <p>p:分割线</p> <!-- 第一个为p,满足条件 -->
        </div>
        <div> <!-- 父元素 -->
            <span>span</span> <!-- 第一个为span -->
            <p>p:分割线</p>
        </div>
    </div>
</body>
</html>

效果
在这里插入图片描述


案例:first-of-type

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>伪类</title>
    <style>
        p:first-of-type{
            color: red;
        }
    </style>
</head>
<body>
    <div>
        <span>灵活的选择器</span>
        <div>
            <p>分割线</p>
        </div>
        <div>
            <span>111</span>
            <p>分割线</p>
        </div>
    </div>
    </div>
</body>
</html>

案例:实现斑马线

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>伪类</title>
    <style>
        .list{
            width: 400px;
            outline: 1px solid red;
        }
        .list p{
            margin: 0;
        }
        .list p:first-child{
            text-align: center;
            font-size: 32px;
        } 
        .list p:nth-child(2n+3){
            background-color: hsl(160, 88%, 80%);
        }
        .list p:nth-child(2n){
            background-color: aqua;
        }
    </style>
</head>
<body>
    <div class="list">
        <p>
            <span>你好</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>
        <p>
            <span>相信自己,你一定可以的,不要忘记休息</span>
        </p>

    </div>
</body>
</html>

效果
在这里插入图片描述

相关文章:

  • TypeScript类型兼容性 vs JavaScript动态类型:深入对比解析
  • 共享经济再中介化进程中的技术创新与模式重构研究——以“开源AI智能名片链动2+1模式S2B2C商城小程序“为例
  • python | 输入日期,判断这一天是这一年的第几天
  • 分布式 IO 模块:氢能源安全高效储运的智能钥匙
  • 项目中使用柯里化函数
  • 优选算法系列(2.滑动窗口 _ 上)
  • 基于CPLD+MCU的3U机箱数字量输入采集板DI,主要针对标准DC110V开关量信号进行采集处理
  • 【CPU】CPU多级缓存和MESI一致性协议
  • 基于System V的共享内存函数使用指南
  • 云原生混合云管理:跨集群智能编排引擎
  • NumPy系列 - 创建矩阵
  • 青少年编程与数学 02-011 MySQL数据库应用 02课题、MySQL数据库安装
  • 微服务架构中10个常用的设计模式
  • GUI编程和TKinter介绍
  • MongoDB下载安装
  • 【MySQL】(6) 数据库约束
  • 使用unsloth进行grpo强化学习训练
  • html5制作2048游戏开发心得与技术分享
  • 仿最美博客POETIZE(简易版)
  • Android (Kotlin) 高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装
  • 上昆“学馆制”10年,完成300出折子戏和20台大戏传承
  • 香港今年新股集资额已超600亿港元,暂居全球首位
  • 复旦一校友捐赠1亿元,却不留名
  • 2人恶意传播刘国梁谣言被处罚,媒体:以法律利剑劈谣斩邪,加快推进依法治体
  • 秦洪看盘|风格有所转变,热钱回流高弹性品种
  • 昔日千亿房企祥生集团约2.03亿元债权被拍卖,起拍价8000万元