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

【学术投稿-第五届应用数学、建模与智能计算国际学术会议】CSS伪类选择器深度解析:分类、应用与技巧

大会官网:www.cammic.org

大会时间:2025年3月21-23日

大会地点:中国-上海(上海大学宝山校区北大门乐乎新楼)

简介

第五届应用数学、建模与智能计算(CAMMIC 2025)将于2025年3月21-23日在中国上海召开。本次由上海大学主办。该会议已成功举办四届,吸引海内外500余名专家学者参会。会议将围绕"应用数学””建模与仿真“”智能计算“的最新研究领域,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验,扩大专业网络,面对面交流新思想以及展示研究成果的国际平台,探讨本领域发展所面临的关键性挑战问题和研究方向,以期推动该领域理论、技术在高校和企业的发展和应用,也为参会者建立业务或研究上的联系以及寻找未来事业上的全球合作伙伴。

目录

前言

一、CSS伪类选择器分类

1. 动态伪类选择器

常见的动态伪类

示例

2. 结构伪类选择器

常见的结构伪类

示例

3. 语言和否定伪类选择器

常见的语言和否定伪类

示例

4. UI伪类选择器

常见的UI伪类

示例

二、总结


前言

本篇博客将深入讲解CSS伪类选择器,按照功能将其分类为:动态伪类结构伪类语言和否定伪类、以及UI伪类,并提供详细的用法、示例和注意事项,帮助更好地掌握这些强大的工具。


一、CSS伪类选择器分类

1. 动态伪类选择器

动态伪类主要用于控制元素在不同交互状态下的样式变化,通常与用户的鼠标操作或键盘操作相关。

常见的动态伪类
  • :hover —— 悬停状态
  • :active —— 被点击或按下的状态
  • :focus —— 获得焦点的状态
  • :focus-within —— 如果某元素或其子元素获得焦点
  • :focus-visible —— 当元素具有焦点且被键盘聚焦时
示例
<button>点击我</button>
<a href="#">悬停我</a>
<input type="text" placeholder="输入文本">
/* 悬停状态 */
a:hover {color: red;
}/* 点击状态 */
button:active {background-color: green;
}/* 焦点状态 */
input:focus {border: 2px solid blue;
}/* 焦点内状态 */
div:focus-within {border: 2px solid purple;
}/* 仅当键盘聚焦时显示焦点 */
input:focus-visible {outline: 3px solid orange;
}

注意事项

  • :hover:active通常用于交互元素(如按钮、链接),能够给用户提供反馈。
  • :focus-within特别适用于表单元素,能够让整个父容器在任意子元素获取焦点时被高亮显示。

2. 结构伪类选择器

结构伪类选择器帮助你根据元素在文档中的位置或其父子关系来选中元素,而不依赖于元素的内容。

常见的结构伪类
  • :first-child —— 父元素的第一个子元素
  • :last-child —— 父元素的最后一个子元素
  • :nth-child(n) —— 父元素中第n个子元素
  • :nth-last-child(n) —— 从后往前数的第n个子元素
  • :only-child —— 父元素中唯一的子元素
  • :nth-of-type(n) —— 同类型元素的第n个子元素
  • :first-of-type —— 同类型元素的第一个
  • :last-of-type —— 同类型元素的最后一个
  • :empty —— 没有任何子元素的元素
示例
<ul><li>第一项</li><li>第二项</li><li>第三项</li>
</ul>
/* 父元素的第一个子元素 */
ul li:first-child {color: blue;
}/* 父元素的最后一个子元素 */
ul li:last-child {color: red;
}/* 第2个子元素 */
ul li:nth-child(2) {font-weight: bold;
}/* 父元素中唯一的子元素 */
div:only-child {background-color: lightgray;
}/* 只有第一项是li标签 */
ul li:first-of-type {font-size: 18px;
}

注意事项

  • :nth-child()可以接受数字、关键字odd(奇数)和even(偶数),也支持公式(如2n表示每两个元素)。
  • 使用:nth-of-type()时,确保你选择的是同一类型的元素,如只选择<li>标签而不受其他标签影响。

3. 语言和否定伪类选择器

语言和否定伪类选择器主要用于通过元素的语言、类名、或者排除某些条件来选择元素。

常见的语言和否定伪类
  • :lang(language) —— 根据元素的语言属性选择元素
  • :not(selector) —— 排除与给定选择器匹配的元素
示例
<p lang="en">This is an English paragraph.</p>
<p lang="fr">C'est un paragraphe en français.</p>
/* 选择所有英语段落 */
p:lang(en) {color: blue;
}/* 排除所有具有class="exclude"的元素 */
div:not(.exclude) {background-color: yellow;
}

注意事项

  • :lang()伪类选择器非常适用于国际化(i18n)网页设计,允许你根据不同的语言应用不同的样式。
  • :not()伪类可以用来排除不想匹配的元素,非常灵活,但要注意性能问题,在复杂选择器中使用时要谨慎。

4. UI伪类选择器

UI伪类选择器用于根据元素的UI状态(如是否选中、是否禁用等)进行选择。

常见的UI伪类
  • :checked —— 选中状态(如复选框或单选框)
  • :disabled —— 禁用状态
  • :enabled —— 启用状态
  • :required —— 必填状态
  • :optional —— 可选状态
  • :valid —— 表单元素内容有效
  • :invalid —— 表单元素内容无效
示例
<input type="checkbox" checked> 选中
<input type="checkbox"> 未选中
<input type="text" required>
/* 选中状态 */
input:checked {background-color: lightgreen;
}/* 禁用状态 */
input:disabled {background-color: lightgray;
}/* 必填状态 */
input:required {border: 2px solid red;
}

注意事项

  • :checked常用于复选框和单选框,能够控制它们在选中状态时的样式。
  • :required:optional是表单控件的伪类,常用于表单验证时应用不同样式。
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>UI伪类</title><style>/* 选中勾选的复选或者单选框 */input:checked{width:30px;height:30px;}/* 选中可用的输入框 */input:enabled{background-color:green;}/* 选中禁用的输入框 */input:disabled{background-color:grey;}input:required {border: 20px solid red;
}</style>
</head>
<body><input type="checkbox"><input type="radio" name="gender"><input type="radio" name="gender"><input type="password" required></input><input type="text" disabled></input>
</body>
</html>

 


二、总结

CSS伪类选择器为我们提供了强大的样式控制功能。通过动态伪类、结构伪类、语言和否定伪类以及UI伪类,我们可以轻松地根据元素的不同状态、位置、类型或语言来应用样式。

掌握这些伪类选择器的用法,能够让你的页面更加智能和富有交互性,提升用户体验。在实际开发中,伪类选择器不仅减少了对JavaScript的依赖,还大大简化了样式的管理和实现。

通过合理运用这些选择器,你可以在不增加额外复杂度的情况下,让你的网页更具表现力和可访问性。

相关文章:

【学术投稿-第五届应用数学、建模与智能计算国际学术会议】CSS伪类选择器深度解析:分类、应用与技巧

大会官网&#xff1a;www.cammic.org 大会时间&#xff1a;2025年3月21-23日 大会地点&#xff1a;中国-上海&#xff08;上海大学宝山校区北大门乐乎新楼&#xff09; 简介 第五届应用数学、建模与智能计算&#xff08;CAMMIC 2025&#xff09;将于2025年3月21-23日在中国…...

常用查找算法整理(顺序查找、二分查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)

常用的查找算法&#xff1a; 顺序查找&#xff1a;最简单的查找算法&#xff0c;适用于无序或数据量小的情况&#xff0c;逐个元素比较查找目标值。二分查找&#xff1a;要求数据有序&#xff0c;通过不断比较中间元素与目标值&#xff0c;将查找范围缩小一半&#xff0c;效率…...

Express 中 res 响应方法详解

一、res.send() 1. 功能 该方法用于发送各种类型的响应&#xff0c;包括字符串、对象、数组、Buffer 等。它会自动设置响应的 Content-Type 头。 2. 示例代码 const express require("express");const app express();app.get("/", (req, res) > {…...

DeepAR:一种用于时间序列预测的深度学习模型

介绍 DeepAR是一种基于递归神经网络&#xff08;RNN&#xff09;的时间序列预测模型&#xff0c;由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据&#xff0c;并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能&#xff0c;从而在实际应用中表…...

权限模型深度解析:RBAC vs ABAC vs PBAC vs TBAC,如何选择最适合的方案?

在数字化系统的安全架构中&#xff0c;权限管理如同一把“隐形钥匙”&#xff0c;既需精准控制访问边界&#xff0c;又要灵活适配复杂多变的业务需求。从传统的角色划分到动态属性策略&#xff0c;从合规驱动的集中管控到任务流程的临时授权&#xff0c;RBAC、ABAC、PBAC、TBAC…...

Windows逆向工程入门之堆栈结构与信息获取

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 1. 堆栈结构基础 堆栈的主要操作&#xff1a; 2. 代码功能解析 2.1 加载 ntdll.dll 2.2 获取 NtQueryInformationThread 函数指针 2.3 调用 NtQueryInformationThread 获取线程信息…...

【c++初阶】类和对象②默认成员函数以及运算符重载初识

目录 ​编辑 默认成员函数&#xff1a; 构造函数 构造函数的特性&#xff1a; 析构函数&#xff1a; 拷贝构造函数&#xff1a; 1. 拷贝构造函数是构造函数的一个重载形式。 2. 拷贝构造函数的参数只有一个且必须是类类型对象的引用&#xff0c;使用传值方式编译器直接报…...

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…...

成熟开发者需具备的能力

精业务 • 指深入理解和熟悉所开发软件的业务逻辑和需求。 • 开发者需要明确软件要解决的问题、面向的用户群体以及核心功能等。 • 精业务有助于开发者更好地设计系统架构、编写符合业务需求的代码&#xff0c;并能根据业务变化灵活调整开发计划。 懂原理 • 指掌握编程的基…...

计算机毕业设计--基于深度学习技术(Yolov11、v8、v7、v5)算法的高效人脸检测模型设计与实现(含Github代码+Web端在线体验界面)

基于深度学习技术&#xff08;Yolov11、v8、v7、v5&#xff09;算法的高效人脸检测模型 Yolo算法应用之《基于Yolo的花卉识别算法模型设计》&#xff0c;请参考这篇CSDN作品&#x1f447; 计算机毕业设计–基于深度学习技术&#xff08;Yolov11、v8、v7、v5&#xff09;算法的…...

力扣做题记录 (二叉树)

二叉树 打算先来了解二叉树基础&#xff0c;都是简单题&#xff0c;目的是熟悉代码格式和解题基础思路。 1、二叉树最大深度 二叉树最大深度 方法一、深度搜索 直接用原函数做递归&#xff0c;比较简单 /*** Definition for a binary tree node.* struct TreeNode {* …...

机试刷题_字符串的排列【python】

题目&#xff1a;字符串的排列 from os import dup # # 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可 # # # param str string字符串 # return string字符串一维数组 # class Solution:def backtrack(self,res,state,choi…...

百度智能云—千帆 ModelBuilder API的简单调用(Java)

百度简介 百度&#xff08;Baidu&#xff09;是拥有强大互联网基础的领先AI公司。百度愿景是&#xff1a;成为最懂用户&#xff0c;并能帮助人们成长的全球顶级高科技公司。 “百度”二字&#xff0c;来自于八百年前南宋词人辛弃疾的一句词&#xff1a;众里寻他千百度。这句话…...

unity学习43:子状态机 sub-state machine

目录 1sub-state machine子状态机 1.1 创建 sub-state machine 1.2 sub-state machine 内容 1.3 子状态机的应用 2 子状态机不同于blend tree的嵌套 3 应用例子&#xff1a;若角色拿不同武器的动画设计&#xff0c;可以使用2种方法 3.1 在1个图层layer里&#xff0c;使用…...

Qt MainWindow

文章目录 0. 概述1. 菜单栏 QMenuBar1.1 例子1&#xff0c;使用图形化界面1.2 例子2&#xff0c;使用代码创建1.3 例子3&#xff0c;添加快捷键1.4 例子4&#xff0c;添加子菜单1.5 例子5&#xff0c;添加分割线和图标1.6 内存泄漏问题 2. 工具栏 QToolBar2.1 例子1&#xff0c…...

GDB QUICK REFERENCE (GDB 快速参考手册)

GDB QUICK REFERENCE {GDB 快速参考手册} References GDB QUICK REFERENCE GDB Version 4 https://users.ece.utexas.edu/~adnan/gdb-refcard.pdf 查看方式&#xff1a;在新标签页中打开图片 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/ [2] gdb-refc…...

【数据结构】 栈和队列

在计算机科学的世界里&#xff0c;数据结构是构建高效算法的基础。栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;作为两种基本且重要的数据结构&#xff0c;在软件开发、算法设计等众多领域都有着广泛的应用。今天&#xff0c;我们就来深入探讨一下栈和…...

AI视频创作教程:如何用AI让古画动起来。

事情缘由&#xff1a; 如果是简单的图&#xff0c;找原图直接写提示词即可。 如果碰到多人多活动的图&#xff0c;直接出的效果会很不好&#xff0c;那么该怎么做呢&#xff1f; 图片分模块 首先&#xff0c;复杂部分的图&#xff0c;把长图分多个模块。 比如这张图&#xff0…...

撕碎QT面具(1):Tab Widget转到某个Tab页

笔者未系统学过C语法&#xff0c;仅有Java基础&#xff0c;具体写法仿照于大模型以及其它博客。自我感觉&#xff0c;如果会一门对象语言&#xff0c;没必要先刻意学C&#xff0c;因为自己具有对象语言的基础&#xff0c;等需要用什么再学也不迟。毕竟不是专门学C去搞算法。 1…...

DeepSeek24小时写作机器人,持续创作高质量文案

内容创作已成为企业、自媒体和创作者的核心竞争力。面对海量的内容需求&#xff0c;人工创作效率低、成本高、质量参差不齐等问题日益凸显。如何在有限时间内产出高质量内容&#xff1f;DeepSeek写作机器人&#xff0c;一款24小时持续创作的智能工具&#xff0c;为企业和个人提…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...