我認爲你正試圖在複雜的事情。一個簡單的解決方案是默認使用未經檢查的樣式對複選框進行樣式設置,然後添加選中的狀態樣式。
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
}
而不在:checked
選擇上面的例子中使用:not(:checked)
會需要使用border: none;
來達到同樣的影響。使用作爲基礎樣式以減少重複。
將input[type="checkbox"]:not(:checked)
用於不希望應用於選中狀態的顯式未檢查樣式。
只是爲了增加這個答案,選擇:not(:checked)在Chrome上完美工作,但它不在IE上(在9和11上測試過)。 – 2015-01-20 15:40:30
@Bruno Finger :: checked和:not(:checked)都應該在IE上工作,除非它們同樣受到一個錯誤的影響,在這個錯誤中,更改checked狀態並不會更新目標元素相對於checked /未檢查的元素。 – BoltClock 2015-01-20 15:44:17