Saya pikir Anda mencoba untuk memperumit masalah. Solusi sederhana adalah dengan hanya mengatur gaya kotak centang Anda secara default dengan gaya yang tidak dicentang dan kemudian menambahkan gaya status yang dicentang.
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
Saya minta maaf karena mengungkit utas lama tetapi merasa itu bisa menggunakan jawaban yang lebih baik.
EDIT (3/3/2016):
Spesifikasi W3C menyatakan bahwa :not(:checked)
sebagai contoh mereka untuk memilih keadaan yang tidak dicentang. Namun, ini secara eksplisit adalah status yang tidak dicentang dan hanya akan menerapkan gaya tersebut ke status yang tidak dicentang. Ini berguna untuk menambahkan gaya yang hanya diperlukan pada keadaan tidak dicentang dan akan perlu dihapus dari keadaan dicentang jika digunakan pada input[type="checkbox"]
selektor. Lihat contoh di bawah untuk klarifikasi.
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
}
Tanpa menggunakan :not(:checked)
contoh di atas, :checked
pemilih perlu menggunakan a border: none;
untuk mencapai pengaruh yang sama.
Gunakan input[type="checkbox"]
untuk gaya dasar untuk mengurangi duplikasi.
Gunakan input[type="checkbox"]:not(:checked)
untuk gaya eksplisit yang tidak dicentang yang tidak ingin Anda terapkan ke status yang dicentang.