2016-10-19 5 views
2

以前にSCSSを使用したことはありませんでしたが、内部にあるチェックボックスがオンかどうかによって要素をスタイルできます。SCSS:子の入力がチェックされているかどうかの要素のスタイルを変更します。

<label> 
    <input type="checkbox"/> 
</label> 

と私はliketoボックスがチェックされているかどうかによってlabel::beforeの内容を変更します

は例えば、私が持っています。

SCSSはこれを許可していますか?はいの場合、どうすればいいですか?

私がSCSSにこれを実行させる理由は、私が誤解していないと、SASSで本当に可能であるということです。
しかし私はSASSに精通していないので、私のファイルを変換するのは明らかに簡単なので、私はSCSSでそれをむかつくでしょう。

+0

[チェックされたラジオボタンのラベルのCSSセレクタ]の重複の可能性あり(http://stackoverflow.com/questions/1431726/css-selector-for-a-checked-radio-buttons-label) – steveax

+0

ターゲット要素の外側にあるラベルは、実際に親要素をターゲットにしています。このため、残念ながら私の状況には当てはまりません。 – eloism

+0

確かに、HTMLを少し再構成すれば、ラベルをターゲットにすることができます。 – steveax

答えて

2

いいえ、子要素の状態に基づいて要素のスタイルを設定できるCSSセレクタはありません。

2

入力の状態に基づいてラベルの内容を変更することはできません。そのためにはJSが必要です。

しかし、あなたはinput:checked{}

EDITを使用して、チェックボックス自体のスタイルを定期的にオールCSS(ひいてはSCSS)で擬似セレクタを使用することができます。私は修正立って、兄弟セレクタを使用してレオナルド・コスタのソリューションを参照してください。

4

私はあなたのHTMLを少し変更しましたが、本当に助けになると思います。

サスコード:

input[type=checkbox] 
    + .checkbox-label 
    color: blue 
    &:checked + .checkbox-label 
    color: red 
    &:before 
     content: "" 
     border: 1px solid #a3adb3 

input[type=checkbox]+.checkbox-label { 
 
    color: blue; 
 
} 
 

 
input[type=checkbox]:checked+.checkbox-label { 
 
    color: red; 
 
} 
 

 
input[type=checkbox]:checked+.checkbox-label:before { 
 
    content: ""; 
 
    border: 1px solid #a3adb3; 
 
}
<input type="checkbox" id="cbox1" value="first_checkbox"> 
 
<label for="cbox1" class="checkbox-label">Hello world</label>

私はいくつかの方法であなたを助けました。

+0

ああ、私は訂正した!私はいつも兄弟セレクターについて忘れています。 – CourtDemone

+0

心配しないでください。重要なことは常に知識の交換です@服装: –

+1

はい、本当にうまくいくでしょう!私はまだ冗談を切っているとは決めていませんが、私はJSなしでこのタイプの振る舞いを実装することを検討しています。ありがとう – eloism

関連する問題