:checked伪类用于选中状态的复选框或单选按钮,可实现自定义样式、展开收起内容、选项卡切换等交互效果,结合label和兄弟选择器无需JavaScript即可控制元素显示与隐藏。

在CSS中,:checked 伪类用于匹配处于选中状态的单选按钮(radio)或复选框(checkbox)。这个选择器非常实用,尤其是在实现无JavaScript交互效果时,比如展开/收起内容、切换主题、自定义表单样式等。
1. :checked 伪类的基本用法
:checked 只会作用于 和 这两种输入类型。当用户选中某个选项时,该元素就会匹配 :checked 选择器。
示例:高亮选中的复选框
input[type="checkbox"]:checked {
box-shadow: 0 0 5px blue;
}这段代码会在复选框被勾选时添加一个蓝色外发光效果。
立即学习“前端免费学习笔记(深入)”;
2. 结合 label 实现视觉美化
由于原生的 input 样式难以完全自定义,通常会隐藏原始控件,使用 label 来显示自定义样式。通过将 label 关联到 input,并利用 :checked + label 或相邻兄弟选择器来控制样式变化。
HTML 示例:
CSS 示例:改变 label 的背景颜色
#toggle {
display: none; /* 隐藏原始复选框 */
}
#toggle + label {
background-color: #ccc;
padding: 10px 20px;
border-radius: 4px;
cursor: pointer;
}
#toggle:checked + label {
background-color: #4CAF50;
color: white;
}当用户点击 label 时,input 状态切换,CSS 根据 :checked 状态更新 label 的外观。
3. 控制其他元素的显示与隐藏
利用 :checked 和兄弟选择器(~ 或 +),可以控制页面上其他元素的显示状态,例如制作无需 JavaScript 的下拉菜单或开关面板。
示例:点击切换内容显示
这里是额外的信息内容。
.extra-content {
display: none;
}
#show-content:checked ~ .extra-content {
display: block;
}当复选框被选中时,后面的 .extra-content 区块会显示出来。
4. 单选框中的应用
对于 radio 按钮,:checked 同样适用。常用于选项卡切换或互斥样式控制。
示例:简单的 CSS 选项卡
这是第一个标签页的内容。这是第二个标签页的内容。
.tab-content {
display: none;
}
#tab1:checked ~ .panel #content1,
#tab2:checked ~ .panel #content2 {
display: block;
}通过 radio 的互斥特性,实现简单的选项卡切换功能。
基本上就这些。:checked 配合 label 和兄弟选择器,能完成很多轻量级交互,适合静态页面或需要降低 JS 依赖的场景。关键是结构要合理,确保 HTML 元素顺序支持选择器匹配。









