:checked表示复选框或单选按钮被选中,:indeterminate表示复选框处于半选状态,需JavaScript设置;二者互斥,可通过CSS分别定义样式以区分状态,常用于树形选择器中父节点状态展示。

在CSS中,:checked 和 :indeterminate 是两个用于表单控件(特别是复选框和单选按钮)的伪类,它们可以分别表示控件的选中状态和“不确定”状态。虽然它们不能直接通过逻辑与结合使用(即不能同时为真),但在实际开发中可以通过合理组织样式来实现对这两种状态的独立或组合控制。
:checked 表示复选框(checkbox)被勾选,或单选按钮(radio)被选中。这是一个明确的用户选择状态。
:indeterminate 表示复选框处于“半选”状态,这通常不是用户直接操作的结果,而是通过JavaScript设置其 indeterminate 属性来实现,常用于父子级联选择的场景中(如树形菜单中的父节点)。
由于HTML没有直接表示“半选”的属性,所以需要JavaScript辅助:
立即学习“前端免费学习笔记(深入)”;
例如:
<input type="checkbox" id="parent-checkbox">
<label for="parent-checkbox">父选项</label>
<p><script>
const checkbox = document.getElementById('parent-checkbox');
checkbox.indeterminate = true;
</script></p><p><style></p><h1>parent-checkbox:indeterminate {</h1><pre class='brush:php;toolbar:false;'>background-color: yellow;} zuojiankuohaophpcn/style>
一个复选框在任意时刻只能处于以下三种状态之一:
注意::indeterminate 状态下,DOM的 checked 属性可能为 false,但它在视觉上是“部分选中”。因此,在样式设计时应避免将 :checked 和 :indeterminate 同时生效。
但你可以分别为它们定义不同样式:
/* 选中状态 */
input[type="checkbox"]:checked {
accent-color: green;
}
<p>/<em> 半选状态 </em>/
input[type="checkbox"]:indeterminate {
accent-color: orange;
}</p>这样,当复选框被完全选中时是绿色,处于半选状态时显示为橙色,视觉上清晰区分。
在实现带有子节点的复选框树时,父节点的状态往往由子节点决定:
此时,CSS 可以这样写来突出半选状态:
.tree-checkbox:indeterminate + label::after {
content: '?';
margin-left: 5px;
}
基本上就这些。:checked 和 :indeterminate 虽然不能同时成立,但配合 JavaScript 使用,能有效提升表单交互体验。关键是理解 indeterminate 是一种UI状态,需脚本驱动,而CSS负责呈现。不复杂但容易忽略细节。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号