css 中的 UI 伪类选择器:可用和不可用 复选框的选中和不确定 有效或无效的表单元素 必须或可选的表单元素 是否处于指定范围的表单元素 只读或可读写 获得焦点

发布时间:2025-05-10      访问量:35
CSS 中的 UI 伪类选择器用于根据用户界面元素的状态或交互来选择元素。这些选择器在创建动态交互效果时非常有用。以下是一些常用的 UI 伪类选择器及其用法:

1. **`:enabled` 和 `:disabled`**
选择启用或禁用的表单元素(如输入框、按钮等)。

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

2. **`:checked`**
选择被选中的单选框(radio)、复选框(checkbox)或 `<option>` 元素。

css input[type="checkbox"]:checked + label { text-decoration: line-through; /* 选中时给标签加删除线 */ } option:checked { font-weight: bold; }

3. **`:indeterminate`**
选择处于不确定状态的复选框(如通过 JavaScript 设置为 `indeterminate`)。

css input[type="checkbox"]:indeterminate { background-color: yellow; }

4. **`:default`**
选择默认的表单元素(如默认提交按钮或预选的选项)。

css button:default { border: 2px solid blue; /* 标记默认按钮 */ }

5. **`:valid` 和 `:invalid`**
基于表单验证状态选择有效或无效的表单元素。

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

6. **`:required` 和 `:optional`**
选择必填或可选的表单元素。

css input:required { background-color: #fff8e1; /* 标记必填字段 */ } input:optional { opacity: 0.8; }

7. **`:in-range` 和 `:out-of-range`**
选择值在指定范围内或超出范围的表单元素(如 `input[type="number"]`)。

css input[type="number"]:in-range { border-color: green; } input[type="number"]:out-of-range { border-color: red; }

8. **`:read-only` 和 `:read-write`**
选择只读或可读写的表单元素。

css input:read-only { background-color: #f5f5f5; cursor: not-allowed; } input:read-write { background-color: white; }

9. **`:focus`**
选择当前获得焦点的元素(如用户点击或 Tab 键导航到的元素)。

css input:focus { outline: 2px solid blue; box-shadow: 0 0 5px rgba(0, 0, 255, 0.5); }

10. **`:focus-within`**
选择包含焦点元素的父元素。常用于表单验证或嵌套焦点状态。

css form:focus-within { background-color: #f9f9f9; /* 整个表单在焦点内时高亮 */ }

11. **`:focus-visible`**
选择通过键盘导航获得焦点的元素(与鼠标点击区分),用于改进无障碍性。

css button:focus-visible { outline: 3px solid orange; /* 仅键盘导航时显示轮廓 */ }

示例用法
假设 HTML 结构如下:
html <form> <input type="text" required> <input type="checkbox" checked> <button type="submit">提交</button> </form>

以下 CSS 规则将:
css input:required { border: 1px solid #ff9800; /* 标记必填字段 */ } input:checked { transform: scale(1.2); /* 放大选中的复选框 */ } button:focus { background-color: #4caf50; /* 按钮获得焦点时改变背景色 */ }

注意事项
- **兼容性**:某些伪类(如 `:focus-visible`)可能需要浏览器前缀或兼容性处理。
- **结合使用**:UI 伪类可以与其他选择器(如属性选择器、类选择器)组合使用,增强选择能力。
- **动态更新**:UI 伪类的状态通常由用户交互或 JavaScript 动态更新。

这些选择器在创建用户友好的表单、交互式组件和无障碍界面时非常有用,可以减少对 JavaScript 的依赖。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念