2016-09-06 71 views
0

ネイティブhtmlチェックボックスをスタイルするのは難しいのでカスタムチェックボックスを作成しようとしています。ラベルをクリックするとチェックボックスがオンになりますが、チェックボックスをオンにしてチェックを外すとラベルの境界線の色が変わります。任意のヘルプ、アイデア、提案、推奨事項は非常に高く評価されます。チェックボックスがチェックされている場合はラベルの色を変更し、チェックボックスがチェックされていない場合は赤色に変更します。

input[type="checkbox"]{display:none;} 
 
label{ 
 
    border:1px solid red; 
 
    width: 15px; 
 
    height:15px; 
 
    display:block; 
 
} 
 
label + input:checked{ 
 
    border-color: blue; 
 
}
<div> 
 
    <label> 
 
    <input type="checkbox"> 
 
    </label> 
 
</div>

答えて

3

親セレクタが存在しないとしてあなたは(JavaScriptをせずに)その階層でやりたいことはできません。

私が見

input[type="checkbox"] { 
 
    display: none; 
 
} 
 

 
label { 
 
    border: 1px solid red; 
 
    width: 15px; 
 
    height: 15px; 
 
    display: block; 
 
} 
 

 
input:checked + label{ 
 
    border-color: blue; 
 
}
<div> 
 
    <input id="cb" type="checkbox"> 
 
    <label for="cb"></label> 
 
</div>

+0

、私はバインドするために、チェックボックスにidを使用する必要はありません:あなたは+をコンビネータチェックボックスの後にラベルを移動して、隣接する兄弟を使用する必要があるだろう私が複数のチェックボックスを作成し、それぞれのチェックボックスを作成するつもりなら、一意のIDは頭の中の痛みです。ラベル付きのチェックボックスにidを使用しない方法はありますか? –

+0

他の唯一のオプションは、ラベルを使用するときに(元々のように)入力要素をラップしてから、親セレクタを使用しないという問題に戻ります。入力にラベルを使用し、ラップしない場合は、IDを使用する必要があります。 – j08691

関連する問題