我认为您试图使事情复杂化。一个简单的解决方案是默认使用未选中样式设置复选框的样式,然后添加选中状态样式。
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
我为提出一个旧线程而道歉,但觉得它可以使用更好的答案。
编辑(2016 年 3 月 3 日):
W3C 规范将:not(:checked)
其作为选择未选中状态的示例。但是,这明确是未选中状态,并且只会将这些样式应用于未选中状态。这对于添加仅在未选中状态下需要并且如果在选择器上使用则需要从选中状态中删除的样式很有用input[type="checkbox"]
。请参阅下面的示例以进行说明。
input[type="checkbox"] {
/* Base Styles aka unchecked */
font-weight: 300; // Will be overwritten by :checked
font-size: 16px; // Base styling
}
input[type="checkbox"]:not(:checked) {
/* Explicit Unchecked Styles */
border: 1px solid #FF0000; // Only apply border to unchecked state
}
input[type="checkbox"]:checked {
/* Checked Styles */
font-weight: 900; // Use a bold font when checked
}
如果不使用:not(:checked)
上面的示例,:checked
选择器将需要使用 aborder: none;
来实现相同的效果。
使用input[type="checkbox"]
for 基本样式来减少重复。
将input[type="checkbox"]:not(:checked)
用于您不想应用于选中状态的显式未选中样式。