物事を過度に複雑にしようとしていると思います。簡単な解決策は、デフォルトでチェックボックスをチェックされていないスタイルでスタイルしてから、チェックされた状態のスタイルを追加することです。
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
古いスレッドを立ち上げたことをお詫びしますが、より良い回答を使用できたように感じました。
編集 (2016 年 3 月 3 日):
W3C Specs: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
セレクターはborder: none;
同じ効果を得るために a を使用する必要がありました。
input[type="checkbox"]
重複を減らすには、ベース スタイルに を使用します。
input[type="checkbox"]:not(:checked)
チェックされた状態に適用したくない明示的なチェックされていないスタイルには、 を使用します。