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

WHAT - CSS 伪类

目录

  • 常见的 CSS 伪类
    • 1. 用户交互相关
    • 2. 结构相关
  • 3. 表单相关
    • 4. 其他常用伪类
  • 伪类 vs 伪元素
  • 总结

CSS 伪类(Pseudo-class)是一种用于选择特定状态下的元素的选择器,它不会修改 HTML 结构,而是根据元素的状态来应用不同的样式。

伪类以 : 开头,例如 :hover:nth-child() 等。

常见的 CSS 伪类

1. 用户交互相关

伪类作用
:hover当鼠标悬停在元素上时应用样式
:active当元素被点击(激活)时应用样式
:focus当元素获取焦点(如输入框被点击)时应用样式
:focus-visible仅当元素通过键盘或某些输入方式获得焦点时生效
button:hover {
  background-color: lightblue;
}

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

2. 结构相关

伪类作用
:first-child选择属于其父元素的第一个子元素
:last-child选择属于其父元素的最后一个子元素
:nth-child(n)选择父元素的第 n 个子元素(从 1 开始计数)
:nth-of-type(n)选择特定类型的第 n 个元素
:only-child选择唯一的子元素
:empty选择没有子元素的元素(包括文本节点)
p:first-child {
  color: red;
}

li:nth-child(odd) {
  background-color: lightgray; /* 选中奇数项 */
}

p:only-child {
  font-weight: bold;
}

这里 :empty 最经典的一个用法就是对于 antd table 支持 cell 为空时添加 - 兜底展示:

.ant-table-cell:empty:after,
.ant-table-cell span:empty:after {
    content: "-";
}

3. 表单相关

伪类作用
:checked选中复选框(checkbox)或单选框(radio)时生效
:disabled选中禁用状态的表单元素
:enabled选中可用状态的表单元素
:required选中必填的输入框
:valid / :invalid用于验证表单输入是否合法
input:checked {
  outline: 2px solid green;
}

input:disabled {
  background-color: lightgray;
}

4. 其他常用伪类

伪类作用
:not(selector)选中不匹配 selector 的元素
:has(selector)选中包含某个子元素的父级(现代浏览器支持)
:is(selector1, selector2)选择符合任意一个 selector 的元素
:where(selector)类似 :is(),但无优先级影响
/* 选择所有不是 .disabled 的按钮 */
button:not(.disabled) {
  background-color: blue;
}

/* 选择所有包含 <img> 的 <div> */
div:has(img) {
  border: 2px solid red;
}

/* 选择 <h1> 或 <h2> */
:is(h1, h2) {
  font-size: 20px;
}

伪类 vs 伪元素

  • 伪类(Pseudo-class):基于元素的状态应用样式(:hover:nth-child())。
  • 伪元素(Pseudo-element):用于创建或选中特定部分的元素::before::after)。

总结

  • 伪类以 : 开头,主要用于元素状态的变化(:hover:checked)。
  • 结构相关的伪类用于选择特定子元素:first-child:nth-child(n))。
  • :not():has() 提供更灵活的选择器控制能力。

相关文章:

  • 用花生棒自己做内网网站网络服务公司经营范围
  • 如何做网站结构优化市场监督管理局投诉电话
  • unity3d可以做网站吗怎么把产品推广到各大平台
  • 山东饰品行业网站开发网络营销课程报告
  • 西地那非片的功能seo沈阳
  • 哪个网站建站好郑州网站推广多少钱
  • 兑换码(Java)
  • 小白速通:Verilog流水线实现及时序分析
  • Mybatis注解开发进阶之复杂的关联查询
  • Nacos注册中心AP模式核心源码分析(集群模式)
  • (一)从零开始:用 LangChain 和 ZhipuAI 搭建简单对话
  • SonarQube数据库配置
  • Flutter之页面布局一
  • Kubernetes 集群搭建(一):k8s 从环境准备到 Calico 网络插件部署(1.16版本)
  • 常见的图像生成算法
  • 堆与二叉树的关系
  • Python四大核心数据结构深度解析:列表、元组、字典与集合
  • STM32F103C8T6实现 SG90 360 °电机转动
  • 积分赛——获取环境温度
  • PyTorch深度学习框架60天进阶学习计划 - 第36天:医疗影像诊断(一)
  • Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException
  • 混合精度策略在PBiCGStab算法中的应用
  • 数据蒸馏:Dataset Distillation by Matching Training Trajectories 论文翻译和理解
  • Redis数据结构之String
  • 蓝桥杯:对字符串处理常用知识笔记
  • 如何在Ubuntu上安装Dify