我认为您正在尝试使事情复杂化。一个简单的解决方案是,默认情况下,仅使用未选中样式设置复选框的样式,然后添加选中状态样式。
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
我为提出旧线程表示歉意,但觉得可以使用更好的答案。
编辑(3/3/2016):
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
选择器将需要使用a border: none;
来实现相同的效果。
使用input[type="checkbox"]
for进行基本样式设计以减少重复。
使用input[type="checkbox"]:not(:checked)
来表示不想应用到选中状态的显式未选中样式。