我遇到了这个带有样式的复选框/标签组合的问题,似乎标签在点击它时不会检查。页面上有一个按钮,用于选择所有"复选框,这是有效的,但通常点击没有任何反应。
代码
<td><div class="checkbox"><input class="check" type="checkbox"><label class="checklabel" for="check"></div></td>
.checkbox {
margin: 3px auto;
width: 25px;
position: relative;
}
.checklabel {
cursor: pointer;
position: absolute;
width: 25px;
height: 25px;
top: 0;
left: 0;
background: #eee;
border:1px solid #ddd;
}
.checkbox label:after {
opacity: 0.2;
content: '';
position: absolute;
width: 9px;
height: 5px;
background: transparent;
top: 6px;
left: 7px;
border: 3px solid #333;
border-top: none;
border-right: none;
transform: rotate(-45deg);
}
.checklabel:hover::after {
opacity: .5;
}
.checkbox input[type=checkbox]:checked + label:after {
opacity: 1;
}
编辑:
好的,非常感谢,需要ID的for
标记解决了这个问题。现在问题是页面上有多个复选框,但即使您单击其中任何一个,也只会选择第一个复选框。有什么想法?
答案 0 :(得分:2)
您没有关闭label
代码,您需要提供与id
属性同名的for
.checkbox {
margin: 3px auto;
width: 25px;
position: relative;
}
.checklabel {
cursor: pointer;
position: absolute;
width: 25px;
height: 25px;
top: 0;
left: 0;
background: #eee;
border: 1px solid #ddd;
}
.checkbox label:after {
opacity: 0.2;
content: '';
position: absolute;
width: 9px;
height: 5px;
background: transparent;
top: 6px;
left: 7px;
border: 3px solid #333;
border-top: none;
border-right: none;
transform: rotate(-45deg);
}
.checklabel:hover::after {
opacity: .5;
}
.checkbox input[type=checkbox]:checked+label:after {
opacity: 1;
}
<div class="checkbox">
<input id="check" class="check" type="checkbox"><label class="checklabel" for="check"></label>
</div>
答案 1 :(得分:0)
标签中的for
属性必须是复选框的ID。由于您的复选框ID不是check
,因此无效。
<td><div class="checkbox"><input id="check" class="check" type="checkbox"><label class="checklabel" for="check"></label></div></td>
此外,您只需封装标签中的复选框,而无需设置for
属性。
<td><div class="checkbox"><label class="checklabel"><input class="check" type="checkbox"></label></div></td>
答案 2 :(得分:0)
关闭标签标签,输入需要一个与标签对应的ID。
<div class="checkbox"><input class="check" type="checkbox" id="check" /><label class="checklabel" for="check"></label></div>
编辑:拼写错误