2016-04-28 7 views
3

は私がASPチェックボックスコントロールを使用していることから、ASPが入力タグにスタイルを適用するために使用するスパンタグを考慮する方法は?

.yesNoBox { 
    display: none; 
} 

.yesNoBox + label { 
    border-radius: 10px; 
    display: inline-block; 
    padding: 2px 10px; 
    cursor: pointer; 
} 

.yesNoBox + label:after { 
    padding-left: 8px; 
    color: gray; 
    content: "NO"; 
    vertical-align: middle; 
} 

.yesNoBox:checked + label:after { 
    color: green; 
    content: "YES"; 
    font-weight: bold; 
} 

.yesNoBox + label > span { 
    height: 16px; 
    border-radius: 8px; 
    width: 16px; 
    background-color: lightgray; 
    display: inline-block; 
    vertical-align: middle; 
} 

.yesNoBox:checked + label > span { 
    background-color: green; 
} 

は、CSSが

<input id="General_Vehicles" name="General_Vehicles" type="checkbox"> 
<label for="General_Vehicles"><span></span></label> 

ただし、次のHTMLのために設計されて、次のCSSを使用してカスタムのチェックボックスを持っている、ASPコントロールは<input>をラップ私は、次の2つのフィドルはSHを設定している

<span class="yesNoBox"><input id="General_Vehicles" name="General_Vehicles" type="checkbox"></span> 
<label for="General_Vehicles"><span></span></label> 

<span>に代わりに次のHTMLを与えますHTMLの各ブロックの動作を起因:

は、どのように私はこの余分なスパンで私のASPページでの作業を取得することができますか?私は、JavaScriptソリューションまたはソリューションの背後にあるコードを望んでいません。

+3

チェックされた要素を含む 'yesNoBox'から隣接する要素を選択するために必要な、あらゆる種類の親セレクタを持たないため、これはおそらくCSSだけである可能性は十分にはわかりません。 ' 'ではなく' 'を使用してマークアップを調整する能力はありますか? –

+0

Shootそれは私が恐れていたものです。残念ながらマークアップを変更できません。 – ChrisStillwell

答えて

3

マークアップ自体を更新することができない場合は、これが完全にCSSを介してどのようになる可能性があるか完全にはわかりません。 adjecent要素が+または~事業者を経由してターゲットとすることができるように、あなたの:checked要素の親要素をターゲットに必要とされるであろう

CSS lacks any type of parental selector、。そのようなオペレータが存在しなかった場合、あなただけのような何か必要があります:

/* If your yesNobox is the parent of a :checked element, then target the next label */ 
.yesNoBox:has(:checked) + label:after { ... } 

をあなたは悲しげにJavaScriptベースのソリューションに頼るか、明示的にそうこれを達成するために、マークアップを編集する機能を持って、その必要があるだろうあなたが言いましたように、問題外です。

関連する問題