2017-07-25 8 views
0

divラッパーでは、ラジオボタンがいくつかあります。 1つが選択されると、そのラベルに特定の背景色を付けることを望みます。どのように具体的に私はこれのCSSルールにすることができますか?CSSで親セレクタとクラスセレクタを組み合わせるにはどうすればよいですか?

HTML:

<div class="switch-wrapper"> 
    <form> 
     <input id="id-1" class="my-switch-on" type="radio" /> 
     <label for="id-1">Yes</label> 
     <input id="id-2" class="my-switch-off" type="radio" /> 
     <label for="id-2">No</label> 
    </form> 
</div> 

私の最も近いの推測:

div.switch-wrapper input[type="radio"].my-switch-on+label { 
    background-color: #000; 
} 

しかし、私はそれを動作させることはできません。確かに仕事

input[type="radio"]:checked + label { 
    background: #000; 
} 

が、私は、セレクタやクラスの他のタイプのプラスセレクターを組み合わせる方法を知りたい:私が代わりにやったことは、このでした。出来ますか?括弧でセレクタをグループ化できますか?例:

div.foo form.bar + div > span { 
    background-color: #000; 
} 

どのセレクタが優先されますか? 2つ以上はできませんか?

私は主にバックエンドエンジニアリングを行い、フロントエンドは私の強い訴訟ではありません。任意のヒントやガイドライン、スペックへのリンクに感謝しました/私は/または短い答えが見つかりませんでした。 :)

答えて

1

This SO postセレクタ連想についてのあなたの特定の質問に答える必要があります。

もしあなたがHTMLをコントロールしていて、非常に精巧なセレクタを必要としているのであれば、代わりにHTMLを少し再構成するほうがよいでしょう。(これはセマンティクスとプレゼンテーションを分離するという理想に反しますが、HTMLとCSSは、

+0

ありがとう!私はあなたの答えを受け入れました。リンクされた質問には実際の答えが含まれています: "少なくとも現在利用可能なものは、ちょうど2つの要素の間の関係しか表現できません"、 "提案された:has()擬似クラス "(まだ実験的、2y後...)。 – Oscar

2

CSSで特定することは、別のルールを上書きしようとしている場合にのみ重要です。通常、クラスのような単純なものを使うのがベストです。

.my-switch:checked + label { 
 
    background: black; 
 
    color: white; 
 
}
<div class="switch-wrapper"> 
 
    <form> 
 
     <input id="id-1" class="my-switch my-switch-on" type="radio" name="onOf" checked /> 
 
     <label for="id-1">Yes</label> 
 
     <input id="id-2" class="my-switch my-switch-off" type="radio" name="onOf" /> 
 
     <label for="id-2">No</label> 
 
    </form> 
 
</div>

+0

私が探していた答えではありませんでした( "やるべきこと"、 "やらなければならない")、とに​​かくあなたの意見をお寄せいただきありがとうございます。ええ、私は提案された解決策を望んでいませんでした。なぜなら、それはきれいではなかったからです。 :) – Oscar

+0

[Specificity](https://developer.mozilla.org/ja/docs/Web/CSS/Specificity)の作品が関心を引くかもしれないこのMDNの記事。 –

関連する問題