深入探索CSS伪类:解锁样式与交互的无限可能

CSS伪类是CSS中一个强大的特性,它们允许开发者基于元素的状态或位置来应用特定的样式,而无需修改HTML结构。伪类扩展了CSS的选择器语法,使得网页设计更加动态和交互友好。本文将全面介绍几种常用的CSS伪类,配以实用代码示例,帮助你掌握这一强大工具。

1. 基础与常用伪类

:hover

:hover伪类用于当鼠标悬停在元素上时改变其样式,常用于按钮、链接的视觉反馈。

a:hover {color: red;text-decoration: underline;
}

:active

:active伪类用于元素被激活时(如鼠标点击但未释放的瞬间),常用于按钮按下效果。

.button:active {background-color: darkblue;transform: translateY(1px);
}

:focus

:focus伪类表示元素获得焦点时的状态,提升网页的可访问性,尤其对于键盘导航的用户。

input:focus {border-color: blue;outline: none;
}

2. 结构性伪类

结构性伪类根据元素在其父元素中的位置或关系来选择元素,不依赖于任何特定状态。

:first-child

选择作为其父元素的第一个子元素的元素。

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

:nth-child(n)

基于索引选择子元素,n可以是数字、公式或关键词。

li:nth-child(odd) {background-color: lightgray;
}

3. 动态伪类

动态伪类反映表单元素的有效性、可用性等动态状态。

:enabled:disabled

分别应用于可操作和不可操作的表单控件。

input:enabled {background-color: white;
}input:disabled {background-color: lightgray;cursor: not-allowed;
}

:valid:invalid

用于验证表单输入的有效性。

input:valid {border-color: green;
}input:invalid {border-color: red;
}

4. 用户行为伪类

:visited

用于访问过的链接,需要注意隐私限制。

a:visited {color: purple;
}

5. CSS3高级伪类

随着CSS3的发展,更多复杂的伪类被引入,如:

:not(selector)

排除匹配特定选择器的元素。

p:not(.highlighted) {color: black;
}

:empty

选择没有任何子元素(包括文本节点)的元素。

div:empty {display: none;
}

:checked

匹配被选中的单选按钮、复选框等。

input[type="checkbox"]:checked + label {font-weight: bold;
}

结语

CSS伪类极大地丰富了网页设计的可能性,它们不仅提升了用户体验,也为开发者提供了更加细腻的控制手段。通过灵活运用这些伪类,你可以创建出既美观又易用的界面。记住,实践是掌握它们的最好方式,不断尝试和组合不同的伪类,发掘它们的无限潜力。

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

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

相关文章

算法训练营第十八天 | LeetCode 102 二叉树的层序遍历、LeetCode 226 翻转二叉树、LeetCode 101 对称二叉树

LeetCode 102 二叉树的层序遍历 这题用的队列和指针遍历法。难点在于记录每层末尾位置,这就要用到两个指针,一个end指针记录末尾节点,一个endchild跟着遍历该层内子节点位置,记录下一层末尾节点位置,方便在该层节点遍…

【leetcode】二叉树的构造题目总结

108. 将有序数组转换为二叉搜索树 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), ri…

Flask教程3:jinja2模板引擎

文章目录 模板的导入与使用 模板的导入与使用 Flask通过render_template来实现模板的渲染,要使用这个方法,我们需要导入from flask import rander_template,模板中注释需放在{# #}中 模板的第一个参数为指定的模板文件名称,如自定…

Rust Rocket创建第一个hello world的Web程序 Rust Rocket开发常用网址和Rust常用命令

一、Rust Rocket简介 Rust Rocket 是一个用 Rust 语言编写的 Web 应用框架,它结合了 Rust 的安全性和性能优势,以及 Web 开发的便利性。以下是 Rust Rocket 框架的一些优点: 安全性:Rust 是一种注重安全性的编程语言,…

一些不错的技术网站(持续更新)

嵌入式: GitHub - nhivp/Awesome-Embedded: A curated list of awesome embedded programming. ELF 文件、镜像(Image)文件、可执行文件、对象文件详解 uboot 启动流程详细分析 树莓派PICO-OLED图片和视频_树莓派控制oled显示视频-CSDN博…

显卡矩阵计算能不能替代3dmark 的甜甜圈烤机

显卡矩阵计算通常是指利用显卡的并行处理能力来进行大规模的数学运算,这在科学计算、大数据处理、以及深度学习等领域非常常见。而3DMark的甜甜圈烤机(Dynamoometer)则是一种专门用于测试显卡在连续运行高负载3D图形渲染时的性能和稳定性的工…

【C++】学习笔记——vector_2

文章目录 七、vector2. vecotr的使用3. vector的模拟实现 未完待续 七、vector 2. vecotr的使用 上节我们以二维数组结束&#xff0c;这一节我们以二维数组开始。 // 二维数组 vector<vector<int>> vv;二维数组在底层是连续的一维数组。vv[i][j] 是怎样访问的&a…

分布式与一致性协议之一致哈希算法(二)

一致哈希算法 使用哈希算法有什么问题 通过哈希算法&#xff0c;每个key都可以寻址到对应的服务器&#xff0c;比如&#xff0c;查询key是key-01,计算公式为hash(key-01)%3,警告过计算寻址到了编号为1的服务器节点A&#xff0c;如图所示。 但如果服务器数量发生变化&#x…

vue3使用el-autocomplete请求远程数据

服务器端 RestController RequestMapping("/teacher") public class TeacherController {Resourceprivate TeacherService teacherService;GetMapping({"/v1/getTop10TeacherByName/","/v1/getTop10TeacherByName/{name}"})public ResultBean&l…

快速批量重命名文件(夹)

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 我这里处理这4个文本&#xff0c;实际可以处理任意数量的文本和文件夹 1、打开工具&#xff0c;进入文件批量复制版块 2、点击“重命名” 3、把要重命名的…

使用Python爬取淘宝商品并做数据分析

使用Python爬取淘宝商品并做数据分析&#xff0c;可以按照以下步骤进行操作&#xff1a; 确定需求&#xff1a;确定要爬取的淘宝商品的种类、数量、关键词等信息。 编写爬虫程序&#xff1a;使用Python编写爬虫程序&#xff0c;通过模拟浏览器请求&#xff0c;获取淘宝商品的页…

Docker 中的 Nginx 服务为什么要启用 HTTPS

一安装容器 1 安装docker-20.10.17 2 安装所需的依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 添加Docker官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4 安装Docker CE 20.10.17 s…

python制作可执行文件(cython)

使用Cython将Python脚本编译成可执行文件涉及几个步骤。以下是一个基本的指南&#xff1a; 1. 安装Cython 首先&#xff0c;你需要安装Cython。你可以使用pip来安装&#xff1a; pip install cython 2. 编写Cython文件 通常&#xff0c;Cython源文件的后缀是.pyx。你可以将…

第182期 23ai:惊喜的全功能缓存True Cache-2安装部署(20240505)

数据库管理182期 2024-05-05 数据库管理-第182期 23ai:惊喜的全功能缓存True Cache-2安装部署&#xff08;20240505&#xff09;1 主机配置2 操作系统配置2.1 基础配置2.2 配置hosts2.3 安装preinstall RPM包2.4 创建目录2.5 配置环境变量 3 部署数据库3.1 部署DB软件3.2 创建监…

机器学习:基于K-近邻(KNN)、高斯贝叶斯(GaussianNB)、SVC、随机森林(RF)、梯度提升树(GBDT)对葡萄酒质量进行预测

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

linux上如何排查JVM内存过高?

怎么排查JVM内存过高&#xff1f; 前言&#xff1a; 想必工作一两年以后的同学都会逐渐面临到&#xff0c;jvm等问题&#xff0c;但是可能苦于无法熟练的使用一些工具&#xff1b;本文将介绍几个比较常用分析工具的使用方法&#xff0c;带着大家一步步定位分析问题。 1、top 查…

uni-app 从vue3项目创建到Pinia管理数据全局使用 持久化存储数据 详细教程

一、创建uni-app项目 1. 安装HBuilder X&#xff0c;下载地址&#xff1a;https://www.dcloud.io/hbuilderx.html 2. 打开HBuilder X&#xff0c;点击左上角的“文件”->“新建”->“项目”&#xff0c;选择“uni-app”项目模板&#xff0c;填写项目名称和项目路径&…

从 Word 文档中提取所有的有效 JSON 对象(包含跨段落)

文章目录 一、概述二、代码 一、概述 从 word 中提取所有有效 json &#xff08;包含跨段落的 json&#xff09;。 二、代码 """ 从 Word 文档中提取所有的 JSON 对象 """from docx import Document import jsondef extract_json_from_docx(d…

springmvc下

第二类初始化操作 multipartResolver应用 localeResolver应用 themeResolver应用 handlerMapping应用 handlerAdapter应用 handlerExceptionReslver requestToViewNameTranslator应用 viewResolver应用 flashMapManager应用 dispatcherServlet逻辑处理 processRequest处理web请…

目标跟踪—卡尔曼滤波

目标跟踪—卡尔曼滤波 卡尔曼滤波引入 滤波是将信号中特定波段频率滤除的操作&#xff0c;是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果&#xff0c;对另一与之有关的随机过程进行估计的概率理论与方法。 历史上最早考虑的是维纳滤波&#xff0c;后来R.E.卡…