あなたは物事を複雑にしすぎていると思います。簡単な解決策は、デフォルトでチェックされていないスタイルでチェックボックスをスタイルし、チェックされた状態のスタイルを追加することです。
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
}
:not(:checked)
上記の例で使用しない場合、:checked
セレクターはborder: none;
同じ効果を得るためにa を使用する必要がありました。
input[type="checkbox"]
重複を減らすために、ベーススタイリングにforを使用します。
input[type="checkbox"]:not(:checked)
チェックされた状態に適用したくない明示的なチェックされていないスタイルにを使用します。