ฉันคิดว่าคุณกำลังพยายามเอาชนะสิ่งที่ซับซ้อน วิธีแก้ปัญหาง่ายๆคือเพียงแค่จัดรูปแบบช่องทำเครื่องหมายของคุณตามค่าเริ่มต้นด้วยสไตล์ที่ไม่ได้ทำเครื่องหมายแล้วเพิ่มรูปแบบสถานะที่เลือก
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
ฉันขอโทษที่นำกระทู้เก่ามาใช้ แต่รู้สึกว่าน่าจะใช้คำตอบที่ดีกว่านี้ได้
แก้ไข (3/3/2559):
ข้อมูลจำเพาะ 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"]
สำหรับจัดแต่งทรงผมฐานเพื่อลดความซ้ำซ้อน
ใช้input[type="checkbox"]:not(:checked)
สำหรับรูปแบบที่ไม่ได้เลือกไว้อย่างชัดเจนซึ่งคุณไม่ต้องการใช้กับสถานะที่เลือก