2013-05-09 25 views
0

HTML:選擇在輸入時檢查下一個元素

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

我希望能夠風格根據輸入的選中狀態DIV元素,像

input ~ div{ 
    display: none; 
} 

input:checked ~ div{ 
    display: block; 
} 

顯然, ~選擇器在這裏似乎不起作用。 +

有沒有其他的解決方案(除了JavaScript)?

+0

答案是http://stackoverflow.com/questions/1014861/is-there-a-css-parent-selector與http://stackoverflow.com/questions/混合5275857/highlight-label-if-checkbox-is-checked – RaphaelDDL 2013-05-09 13:00:16

回答

1

不幸的是,沒有辦法在純CSS中選擇祖先,這是您選擇祖先的兄弟姐妹所需要的。

我看到人們圍繞其他內容與標籤 - 而這是一個非常值得商榷的做法,它將允許您使用+選擇樣式的DIV:

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

    <div> 
     stuff 
    </div> 
</label> 

編輯:

還是這個(感謝@lnrbob指點出來)

<label for="myCheckbox"> 
    This is my label 
</label> 

<input id="myCheckbox" type="checkbox" /> 
<div> 
    stuff 
</div> 
+4

或者將輸入移出標籤並與'for'屬性關聯 – lnrbob 2013-05-09 13:01:36

+0

嘿,等等,我怎麼沒發現這一點。答案已更新。 – Maloric 2013-05-09 13:04:29

+0

我想到了這一點,但我不能在輸入和標籤上添加ID,因爲我的標記的某些部分被複制並緩存(它們將具有相同的ID):( – thelolcat 2013-05-09 13:06:01

0

試試這個,林不知道它是什麼它的跨瀏覽器兼容性是。

input:checked + div 
{ 
background: #333; 
height: 30px; 
width: 30px; 
} 

這應該工作,但我wouldnt做到這一點,我會做Javascript。

見我jsfiddle

+0

輸入位於'

+0

我在jsfiddle中沒有任何地方放過標籤(80's樣式)標籤,所以這意味着你沒有看到我的jsfiddle。 – Cam 2013-05-13 12:55:31

+0

我看着你的jsfiddle,但這不是問題表明他的HTML是如何設置的。迴應他的HTML,而不是你的。 – bbbco 2013-05-13 15:35:43