检查后更改单选按钮根本不起作用
Change of radio button after checking does not work at all
我想做一个单选按钮在被选中后会改变颜色的小测验。我创建了以下示例,但点击后并未按预期更改背景。
HTML:
<div id="quiz">
<input name="question_id" value="2" type="hidden">
<ul class="list-inline">
<label for="id_answers_0"><input id="id_answers_0" name="answers" value="5" type="radio"> None</label>
<label for="id_answers_1"><input id="id_answers_1" name="answers" value="6" type="radio"> A little</label>
<label for="id_answers_2"><input id="id_answers_2" name="answers" value="7" type="radio"> A lot</label>
<label for="id_answers_3"><input id="id_answers_3" name="answers" value="8" type="radio"> Enormous</label>
</ul>
</div>
CSS:
#quiz {
margin:4px;
text-align:center;
float:left;
font-size: 16px;
padding:13px 0px;
width : 100%;
}
#quiz label {
float:left;
width:170px;
padding : 5%;
margin:4px;
background-color:#EFEFEF;
border-radius:4px;
border:1px solid #D0D0D0;
overflow:auto;
}
#quiz label:hover {
background-color: green;
color: white;
}
input[type="radio"]:checked+label{ background:black; }
#quiz label input {
position:absolute;
top:-20px;
}
Jsfiddle 示例:
http://jsfiddle.net/n5xb4b9v/
干杯
这是一个工作示例,http://jsfiddle.net/n5xb4b9v/3/
我把html改成了这个
<div id="quiz">
<input name="question_id" value="2" type="hidden">
<ul class="list-inline">
<input id="id_answers_0" name="answers" value="5" type="radio"><label for="id_answers_0"> None</label>
<input id="id_answers_1" name="answers" value="6" type="radio"><label for="id_answers_1"> A little</label>
<input id="id_answers_2" name="answers" value="7" type="radio"><label for="id_answers_2"> A lot</label>
<input id="id_answers_3" name="answers" value="8" type="radio"><label for="id_answers_3"> Enormous</label>
</ul>
</div>
并将此添加到您的 css
input[type=radio] {
display: none;
}
#quiz input[type="radio"]:checked + label {
background-color: black;
}
对不起,伙计,我没有对齐和评论代码
你的主要错误 - + 在 css
+ 选择器意味着:
标签 1 + 标签 2 {
样式
}
这意味着,仅当此标签放置在标签 1(而非子标签)之后时,标签 2 才会设置样式
<div id="quiz">
<input name="question_id" value="2" type="hidden">
<ul class="list-inline">
<input id="id_answers_0" name="answers" value="5" type="radio">
<label for="id_answers_0">None</label>
<input id="id_answers_1" name="answers" value="6" type="radio">
<label for="id_answers_1"> A little</label>
<input id="id_answers_2" name="answers" value="7" type="radio">
<label for="id_answers_2"> A lot</label>
<input id="id_answers_3" name="answers" value="8" type="radio">
<label for="id_answers_3"> Enormous</label>
</ul>
</div>
我想做一个单选按钮在被选中后会改变颜色的小测验。我创建了以下示例,但点击后并未按预期更改背景。
HTML:
<div id="quiz">
<input name="question_id" value="2" type="hidden">
<ul class="list-inline">
<label for="id_answers_0"><input id="id_answers_0" name="answers" value="5" type="radio"> None</label>
<label for="id_answers_1"><input id="id_answers_1" name="answers" value="6" type="radio"> A little</label>
<label for="id_answers_2"><input id="id_answers_2" name="answers" value="7" type="radio"> A lot</label>
<label for="id_answers_3"><input id="id_answers_3" name="answers" value="8" type="radio"> Enormous</label>
</ul>
</div>
CSS:
#quiz {
margin:4px;
text-align:center;
float:left;
font-size: 16px;
padding:13px 0px;
width : 100%;
}
#quiz label {
float:left;
width:170px;
padding : 5%;
margin:4px;
background-color:#EFEFEF;
border-radius:4px;
border:1px solid #D0D0D0;
overflow:auto;
}
#quiz label:hover {
background-color: green;
color: white;
}
input[type="radio"]:checked+label{ background:black; }
#quiz label input {
position:absolute;
top:-20px;
}
Jsfiddle 示例: http://jsfiddle.net/n5xb4b9v/
干杯
这是一个工作示例,http://jsfiddle.net/n5xb4b9v/3/
我把html改成了这个
<div id="quiz">
<input name="question_id" value="2" type="hidden">
<ul class="list-inline">
<input id="id_answers_0" name="answers" value="5" type="radio"><label for="id_answers_0"> None</label>
<input id="id_answers_1" name="answers" value="6" type="radio"><label for="id_answers_1"> A little</label>
<input id="id_answers_2" name="answers" value="7" type="radio"><label for="id_answers_2"> A lot</label>
<input id="id_answers_3" name="answers" value="8" type="radio"><label for="id_answers_3"> Enormous</label>
</ul>
</div>
并将此添加到您的 css
input[type=radio] {
display: none;
}
#quiz input[type="radio"]:checked + label {
background-color: black;
}
对不起,伙计,我没有对齐和评论代码 你的主要错误 - + 在 css + 选择器意味着:
标签 1 + 标签 2 { 样式 }
这意味着,仅当此标签放置在标签 1(而非子标签)之后时,标签 2 才会设置样式
<div id="quiz">
<input name="question_id" value="2" type="hidden">
<ul class="list-inline">
<input id="id_answers_0" name="answers" value="5" type="radio">
<label for="id_answers_0">None</label>
<input id="id_answers_1" name="answers" value="6" type="radio">
<label for="id_answers_1"> A little</label>
<input id="id_answers_2" name="answers" value="7" type="radio">
<label for="id_answers_2"> A lot</label>
<input id="id_answers_3" name="answers" value="8" type="radio">
<label for="id_answers_3"> Enormous</label>
</ul>
</div>